Il metodo Reduce
Fa parte della sezione Logica e flusso del percorso JavaScript di Coddy. Lezione 54 di 65.
Il metodo reduce() ti consente di «ridurre» un array a un singolo valore eseguendo una funzione fornita per ogni elemento dell’array. Questo singolo valore può essere un numero, una stringa, un oggetto o persino un altro array.
Ecco la sintassi del riduttore:
array.reduce(function(accumulator, currentValue, currentIndex, array) {
// restituisci il valore aggiornato di accumulator
}, initialValue);Componenti chiave:
- accumulator: accumula i valori restituiti dalla callback (consideralo come il totale progressivo)
- currentValue: L'elemento corrente elaborato nell'array
- currentIndex: (facoltativo) L'indice dell'elemento corrente
- array: (facoltativo) L’array su cui è stato chiamato reduce()
- initialValue: (facoltativo) Un valore da utilizzare come primo argomento alla prima chiamata della funzione di callback
Ad esempio - somma di numeri:
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15Come funziona passo dopo passo:
const numbers = [1, 2, 3, 4];
const sum = numbers.reduce((acc, curr) => {
console.log(`Accumulator: ${acc}, Current Value: ${curr}`);
return acc + curr;
}, 0);
// Output:
// Accumulatore: 0, Valore corrente: 1
// Accumulatore: 1, Valore corrente: 2
// Accumulatore: 3, Valore corrente: 3
// Accumulatore: 6, Valore corrente: 4
// Risultato finale: 10Sfida
FacileCrea una funzione chiamata calculateGroceryTotal che accetta un array di oggetti che rappresentano articoli della spesa.
Ogni oggetto ha due proprietà:
name: stringa (nome dell'articolo)price: numero (prezzo dell'articolo)
La funzione dovrebbe:
- Calcolare il costo totale di tutti gli articoli
- Applicare uno sconto: - Se il totale è superiore a 100, applicare uno sconto del 10%
- Se il totale è superiore a 50 ma minore o uguale a 100, applicare uno sconto del 5%
- Nessuno sconto per totali pari o inferiori a 50.
Restituire un oggetto contenente:
originalTotal: la somma prima dello scontodiscount: l'importo risparmiatofinalTotal: l'importo finale dopo lo sconto
Provalo tu
function calculateGroceryTotal(items) {
// Scrivi il codice qui
return {
originalTotal: Math.round(originalTotal * 100) / 100, // Arrotonda a 2 cifre decimali
discount: Math.round(discount * 100) / 100,
finalTotal: Math.round(finalTotal * 100) / 100
};
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Fondamenti delle stringheIterare sulle stringheTemplate literalsMetodi delle stringheRiepilogo - Intrecciatore di stringhe4JSON Parte 2
Iterare su JSONJSON annidatoOptional chaining in JSONCopia superficiale e profondaRipasso - Negozio di bicicletteRipasso - Sistema solare7Sistema di gestione della biblioteca
Panoramica del progettoAggiungere libri10Gestire il sistema del festival
Panoramica del progettoAggiungere film e sale2Array multidimensionali
Nozioni di base sugli array 2DAccesso agli elementi di un array 2DCicli annidati con array 2DRipasso: array 2DAddizione e sottrazione di matriciArray frastagliatiArray 3D e oltreSchemi comuni con array 2DRipasso: tutto sugli array5Insiemi Parte 1
Che cos'è un insieme?Iterare sugli insiemiAggiungere un elementoRimuovere un elementoVerificare se un elemento esisteDimensione e verifica del vuotoCopiare e svuotareRiepilogo - Nozioni di base sugli insiemi8Argomenti interessanti sugli array
Destrutturazione degli arraySintassi spread negli arrayArray sparsiRiepilogo - Laboratorio sugli array3JSON Parte 1
Che cos'è JSON?Verificare se una chiave esisteMetodi degli oggettiL'operatore spread Parte 1L'operatore spread Parte 2Rimuovere le chiaviRipasso - Manipolare le chiavi in JSONEsercitati da solo: Compilatore JavaScript online