Array JavaScript : Comprendere la funzione di ridurre
Sintassi
arr.reduce(callbackFunction, [initialValue])
Ciò che riducono fare?
Ridurre è una funzione che scorre un array.
Le operazioni possono essere eseguite sul campo tramite una funzione callback.
Al termine delle operazioni sull'array, ridurre il rendimento di un singolo valore
Ridurre può essere utilizzato, per esempio, per un totale di un carrello della spesa
Esempio
lasciate arr = [1,2,3,4,5];
arr.reduce( (accumulatore, valore corrente, currentIndex, schieramento) => {
//alcune operazioni;
restituire qualcosa;
});
La funzione di callback
La funzione di callback viene richiamata per ogni elemento dell'array, passando 4 argomenti che vengono passati in dalla funzione di ridurre.
Queste 4 argomenti poi possono essere utilizzati nella nostra funzione di callback.
Prende quattro argomenti
- accumulatore – Il primo elemento della matrice sul primo loop o valore iniziale se fornita. Quindi il valore restituito del ciclo precedente.
- valore corrente – L'elemento corrente nella matrice. Inizia dal secondo elemento della matrice ie. arr[1], quando l'argomento iniziale valore non viene passato. Se l'argomento iniziale valore viene passato valore attuale inizia quindi dal primo elemento della matrice arr[0].
- currentIndex – L'indice dell'elemento corrente.
- schieramento – L'intero array.
Esempio di lavoro
lasciate arr = [1,2,3,4,5]; arr.reduce( (accumulatore, valore corrente, currentIndex, schieramento) => { console.log(`accumulatore (Il 1 ° ciclo, accumulatore è arr[0], allora è il valore restituito del ciclo precedente): ${accumulatore}`); console.log(`CurrentValue (Loop attraverso l'array, partendo arr[1]): ${valore corrente}`); console.log(`currentIndex: ${currentIndex}`); console.log(`matrice: ${schieramento}`); console.log('---'); accumulatore di ritorno + valore corrente; } );
Produzione
accumulatore (Il 1 ° ciclo, accumulatore è arr[0], allora è il valore restituito del ciclo precedente): 1 valore corrente (Loop attraverso l'array, partendo arr[1]): 2 currentIndex: 1 schieramento: 1,2,3,4,5 --- accumulatore (Il 1 ° ciclo, accumulatore è arr[0], allora è il valore restituito del ciclo precedente): 3 valore corrente (Loop attraverso l'array, partendo arr[1]): 3 currentIndex: 2 schieramento: 1,2,3,4,5 --- accumulatore (Il 1 ° ciclo, accumulatore è arr[0], allora è il valore restituito del ciclo precedente): 6 valore corrente (Loop attraverso l'array, partendo arr[1]): 4 currentIndex: 3 schieramento: 1,2,3,4,5 --- accumulatore (Il 1 ° ciclo, accumulatore è arr[0], allora è il valore restituito del ciclo precedente): 10 valore corrente (Loop attraverso l'array, partendo arr[1]): 5 currentIndex: 4 schieramento: 1,2,3,4,5 ---
Fornire il valore iniziale
Specificando il secondo parametro (valore iniziale) nella funzione ridurre causerà initialValue da passare come argomento accumulatore sul primo loop.
Si noti che il valore di corrente al 1 ° ciclo inizia ora al primo elemento della matrice
Esempio di lavoro
lasciate arr = [1,2,3,4,5]; arr.reduce( (accumulatore, valore corrente, currentIndex, schieramento) => { console.log(`accumulatore ( Il 1 ° ciclo, questo è il valore iniziale, allora il valore restituito del ciclo precedente): ${accumulatore}`); console.log(`CurrentValue (Loop attraverso l'array, partendo arr[0]): ${valore corrente}`); console.log(`currentIndex: ${currentIndex}`); console.log(`matrice: ${schieramento}`); console.log('---'); accumulatore di ritorno + valore corrente; }, 0 );
Produzione
accumulatore ( Il 1 ° ciclo, questo è il valore iniziale, allora il valore restituito del ciclo precedente): 0 valore corrente (Loop attraverso l'array, partendo arr[0]): 1 currentIndex: 0 schieramento: 1,2,3,4,5 --- accumulatore ( Il 1 ° ciclo, questo è il valore iniziale, allora il valore restituito del ciclo precedente): 1 valore corrente (Loop attraverso l'array, partendo arr[0]): 2 currentIndex: 1 schieramento: 1,2,3,4,5 --- accumulatore ( Il 1 ° ciclo, questo è il valore iniziale, allora il valore restituito del ciclo precedente): 3 valore corrente (Loop attraverso l'array, partendo arr[0]): 3 currentIndex: 2 schieramento: 1,2,3,4,5 --- accumulatore ( Il 1 ° ciclo, questo è il valore iniziale, allora il valore restituito del ciclo precedente): 6 valore corrente (Loop attraverso l'array, partendo arr[0]): 4 currentIndex: 3 schieramento: 1,2,3,4,5 --- accumulatore ( Il 1 ° ciclo, questo è il valore iniziale, allora il valore restituito del ciclo precedente): 10 valore corrente (Loop attraverso l'array, partendo arr[0]): 5 currentIndex: 4 schieramento: 1,2,3,4,5 ---
