Metodo reduce
Il metodo reduce riduce un array a
un singolo valore (riduce). Ad esempio,
con questo metodo si può facilmente trovare la somma
degli elementi dell'array (cioè l'array viene ridotto
a un singolo valore - la somma degli elementi).
Il primo parametro del metodo reduce riceve
una funzione, che verrà eseguita sequenzialmente
per ogni elemento dell'array, a partire dal primo.
In questa funzione si possono passare 4 parametri.
Se questi parametri sono presenti (non sono obbligatori),
allora nel primo andrà automaticamente il risultato
intermedio, nel secondo andrà l'elemento
dell'array, nel terzo - il suo numero nell'array (indice),
e nel quarto - l'array stesso.
Il risultato intermedio è una variabile,
in cui si accumulerà il valore
che il metodo reduce restituirà
quando avrà iterato su tutti gli elementi dell'array. Ad esempio,
lì si può accumulare sequenzialmente la somma
degli elementi dell'array: prima mettere il primo
elemento, al passaggio successivo del ciclo già
la somma del primo elemento e del secondo,
al passaggio successivo - la somma del primo, del secondo e del terzo.
E così via, finché l'array non finisce.
La funzione, che accetta reduce,
deve restituire il nuovo valore del risultato
intermedio.
Il secondo parametro del metodo reduce specifica
il valore iniziale del risultato intermedio.
Se non specificato, sarà uguale al primo
elemento dell'array, e l'elaborazione degli elementi inizierà
dal secondo elemento.
Sintassi
array.reduce(function(risultatoIntermedio, elemento, indice, array) {
return nuovoRisultatoIntermedio;
}, valoreIniziale);
Esempio
Troviamo la somma degli elementi dell'array:
let arr = [1, 2, 3, 4, 5, 6];
let res = arr.reduce(function(somma, elem) {
return somma + elem;
}, 0);
console.log(res);
Risultato dell'esecuzione del codice:
21
Esempio
Troviamo la somma di tutti i numeri positivi dell'array:
let arr = [1, -2, -3, 4, 5, -6];
let res = arr.reduce(function(somma, elem) {
if (elem >= 0) {
return somma + elem;
} else {
return somma;
}
}, 0);
console.log(res);
Risultato dell'esecuzione del codice:
10