JavaScript Array spread / riposo


Esempio

Operatore di diffusione

6

Con ES6, puoi usare gli spread per separare i singoli elementi in una sintassi separata da virgole:

let arr = [1, 2, 3, ...[4, 5, 6]];  // [1, 2, 3, 4, 5, 6]

// in ES < 6, the operations above are equivalent to
arr = [1, 2, 3];
arr.push(4, 5, 6);

L'operatore di spread agisce anche su stringhe, separando ogni singolo carattere in un nuovo elemento stringa. Pertanto, utilizzando una funzione di matrice per convertirli in numeri interi, la matrice creata sopra è equivalente a quella seguente:

let arr = [1, 2, 3, ...[..."456"].map(x=>parseInt(x))]; // [1, 2, 3, 4, 5, 6]

Oppure, usando una singola stringa, questo potrebbe essere semplificato per:

let arr = [..."123456"].map(x=>parseInt(x)); // [1, 2, 3, 4, 5, 6]

Se la mappatura non viene eseguita, allora:

let arr = [..."123456"]; // ["1", "2", "3", "4", "5", "6"]

L'operatore di spread può anche essere utilizzato per distribuire argomenti in una funzione :

function myFunction(a, b, c) { }
let args = [0, 1, 2];

myFunction(...args);

// in ES < 6, this would be equivalent to:
myFunction.apply(null, args);

Operatore di riposo

L'operatore di riposo fa l'opposto dell'operatore di spread raggruppando più elementi in uno solo

[a, b, ...rest] = [1, 2, 3, 4, 5, 6]; // rest is assigned [3, 4, 5, 6]

Raccogli argomenti di una funzione:

function myFunction(a, b, ...rest) { console.log(rest); }

myFunction(0, 1, 2, 3, 4, 5, 6); // rest is [2, 3, 4, 5, 6]