Sobes.tech
Junior

Milleks kasutatakse spread ja rest operaatoreid JavaScriptis?

sobes.tech AI

Vastus AI-lt

Operaator spread (...) kasutatakse iteratiivsete objektide (nagu massiivid või stringid) "lai laiendada" kohtadesse, kus oodatakse null või rohkem argumente (funktsioonide kutsumisel) või elemente (massiivide loomisel). Samuti kasutatakse selleks, et ühendada objektide omadused uude objekti.

// Spread kasutamine funktsiooni kutsumisel
const numbers = [1, 2, 3];
console.log(...numbers); // 1 2 3

// Spread kasutamine massiivide ühendamiseks
const arr1 = [1, 2];
const arr2 = [3, 4];
const combinedArr = [...arr1, ...arr2]; // [1, 2, 3, 4]

// Spread kasutamine objektide ühendamiseks
const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const combinedObj = { ...obj1, ...obj2 }; // { a: 1, b: 2, c: 3, d: 4 }

Operatsioon rest (...) kasutatakse funktsiooni parameetrite süntaksis, et koguda kõik ülejäänud argumendid massiivi. See võimaldab funktsioonil saada määramata arvu argumente. Samuti kasutatakse seda massiivi või objekti destruktureerimisel, et koguda ülejäänud elemendid või omadused.

// Rest kasutamine funktsiooni parameetrites
function sum(...args) {
  // args on nüüd massiiv [1, 2, 3]
  return args.reduce((total, current) => total + current, 0);
}
console.log(sum(1, 2, 3)); // 6

// Rest kasutamine massiivi destruktureerimisel
const [first, second, ...restOfArray] = [1, 2, 3, 4, 5];
// first = 1, second = 2, restOfArray = [3, 4, 5]

// Rest kasutamine objekti destruktureerimisel
const { a, b, ...restOfObject } = { a: 1, b: 2, c: 3, d: 4 };
// a = 1, b = 2, restOfObject = { c: 3, d: 4 }

Peamine erinevus:

  • Spread "laiendab" elemente või omadusi.
  • Rest "kogub" elemente või omadusi massiivi/objekti.