Junior
JavaScript-ში spread და rest ოპერატორები რა მიზნით გამოიყენება?
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- элементтерди же мүнөздөмөлөрдү "жыйнайт" жана массивге/объектке топтойт.