Menu
Coddy logo textTech

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:

  1. accumulator: accumula i valori restituiti dalla callback (consideralo come il totale progressivo)
  1. currentValue: L'elemento corrente elaborato nell'array
  1. currentIndex: (facoltativo) L'indice dell'elemento corrente
  1. array: (facoltativo) L’array su cui è stato chiamato reduce()
  1. 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); // 15

Come 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: 10
challenge icon

Sfida

Facile

Crea 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:

  1. Calcolare il costo totale di tutti gli articoli
  2. Applicare uno sconto: - Se il totale è superiore a 100, applicare uno sconto del 10%
  3. Se il totale è superiore a 50 ma minore o uguale a 100, applicare uno sconto del 5%
  4. Nessuno sconto per totali pari o inferiori a 50.

Restituire un oggetto contenente:

  • originalTotal: la somma prima dello sconto
  • discount: l'importo risparmiato
  • finalTotal: 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
    };
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore JavaScript online