Sobes.tech
Junior

Операторҳои spread ва rest дар JavaScript барои чӣ истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Ҳамлачи spread (...) оператори, қайталанадиган объектларни (масалан, массивлар ёки сатрлар) функция чақиришда ёки массивлар яратишда нол ёки кўпроқ аргументлар ёки элементлар кутилган жойларда "кенгайтириш" учун қўлланилади. Ушбу оператор объектлар хусусиятларини янги объектга қўшиш учун ҳам қўлланилади.

// Функция чақиришда spreadдан фойдаланиш
const numbers = [1, 2, 3];
console.log(...numbers); // 1 2 3

// Массивларни бирлаштириш учун spreadдан фойдаланиш
const arr1 = [1, 2];
const arr2 = [3, 4];
const combinedArr = [...arr1, ...arr2]; // [1, 2, 3, 4]

// Объектларни бирлаштириш учун spreadдан фойдаланиш
const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const combinedObj = { ...obj1, ...obj2 }; // { a: 1, b: 2, c: 3, d: 4 }

rest (...) оператори, функция параметрларининг синтаксида, қолган барча аргументларни массивга жамлаш учун қўлланилади. Бу функцияга номаълум сонида аргументлар қабул қилиш имконини беради. Ушбу оператор массивлар ёки объектларни деструктуризация қилишда қолган элементлар ёки хусусиятларни жамлаш учун ҳам қўлланилади.

// Restдан функция параметрларида фойдаланиш
function sum(...args) {
  // args ҳозир [1, 2, 3] массиви
  return args.reduce((total, current) => total + current, 0);
}
console.log(sum(1, 2, 3)); // 6

// Массив деструктуризациясида restдан фойдаланиш
const [first, second, ...restOfArray] = [1, 2, 3, 4, 5];
// first = 1, second = 2, restOfArray = [3, 4, 5]

// Объект деструктуризациясида restдан фойдаланиш
const { a, b, ...restOfObject } = { a: 1, b: 2, c: 3, d: 4 };
// a = 1, b = 2, restOfObject = { c: 3, d: 4 }

Асосий фарқ:

  • spread "кенгайтириш" элементлар ёки хусусиятларни
  • rest "жамлаш" элементлар ёки хусусиятларни массив ёки объектга.