Sobes.tech
Junior

Kāda ir atšķirība starp spread un rest operatoriem?

sobes.tech AI

Atbilde no AI

Izplatīšanas operators (...) paplašina iterējamus objektus (masīvus, virknes) atsevišķos elementos un bieži tiek izmantots masīvu kopēšanai, objektu apvienošanai vai argumentu nodošanai funkcijām. Atlikušā elementa operators (...) savāc atlikušos elementus vienā masīvā, ko izmanto destrukturizācijā vai funkciju definīcijā argumentu savākšanai.

Piemēri:

// Masīva kopijas izveide
const arr1 = [1, 2, 3];
const arr2 = [...arr1]; // arr2 = [1, 2, 3]

// Masīvu apvienošana
const arr3 = [4, 5];
const combined = [...arr1, ...arr3]; // combined = [1, 2, 3, 4, 5]

// Argumentu nodošana funkcijai
function sum(a, b, c) {
  return a + b + c;
}
const numbers = [1, 2, 3];
const result = sum(...numbers); // result = 6

Atlikušā elementa savākšanas piemērs:

// Masīva destrukturizācijā atlikušos elementus savāc
const [first, ...restOfArray] = [1, 2, 3, 4]; // first = 1, restOfArray = [2, 3, 4]

// Argumentu savākšana funkcijā
function logArguments(arg1, ...restArgs) {
  console.log(arg1); // pirmais arguments
  console.log(restArgs); // atlikušie argumenti kā masīvs
}
logArguments(1, 2, 3, 4); // Izvadīs 1 un [2, 3, 4]

Galvenā atšķirība ir to mērķos: spread paplašina, rest savāc.