Sobes.tech
Junior

Care este diferența dintre operatorii spread și rest?

sobes.tech AI

Răspuns de la AI

Operatorul de răspândire (...) extinde obiecte iterabile (array-uri, șiruri) în elemente individuale și este adesea folosit pentru a crea copii ale array-urilor, pentru a uni obiecte sau pentru a transmite argumente funcțiilor. Operatorul de rest (...) adună elementele rămase într-un singur array, utilizat în destrucțurare sau la definirea funcțiilor pentru a colecta argumente.

Exemple de utilizare a spread:

// Crearea unei copii a unui array
const arr1 = [1, 2, 3];
const arr2 = [...arr1]; // arr2 = [1, 2, 3]

// Combinarea array-urilor
const arr3 = [4, 5];
const combined = [...arr1, ...arr3]; // combined = [1, 2, 3, 4, 5]

// Transmiterea argumentelor către o funcție
function sum(a, b, c) {
  return a + b + c;
}
const numbers = [1, 2, 3];
const result = sum(...numbers); // result = 6

Exemple de utilizare a rest:

// Colectarea elementelor rămase în destrucțurarea unui array
const [first, ...restOfArray] = [1, 2, 3, 4]; // first = 1, restOfArray = [2, 3, 4]

// Colectarea argumentelor într-o funcție
function logArguments(arg1, ...restArgs) {
  console.log(arg1); // primul argument
  console.log(restArgs); // array-ul celorlalte argumente
}
logArguments(1, 2, 3, 4); // Va afișa 1 și [2, 3, 4]

Diferența principală constă în scopul lor: spread extinde, rest grupează.