Pelajaran modul (2/4)
mengurangi
reduce adalah metode array fungsional yang paling kuat: metode ini menelusuri koleksi
menyimpan akumulator yang diperbarui di setiap langkah. Ketika perulangan selesai, ia mengembalikan
akumulator.
Tanda tangan
arr.reduce((acc, elem) => nuovoAcc, valoreIniziale);accdimulai padavaloreIniziale.- Untuk setiap elemen,
accbaru dihitung. - Hasil akhir adalah
accterakhir.
Contoh dasar: jumlah dan produk
const numeri = [3, 1, 4, 1, 5];
const somma = numeri.reduce((a, n) => a + n, 0);
// 14
const prodotto = numeri.reduce((a, n) => a * n, 1);
// 60Tanpa nilai awal, reduce dimulai dari elemen pertama (berisiko berpotensi kosong
array → kesalahan). Selalu berikan nilai awal bila Anda bisa.
Membangun suatu objek: menghitung
const parole = ['mela', 'pera', 'mela', 'kiwi', 'mela'];
const conteggio = parole.reduce((acc, p) => {
acc[p] = (acc[p] ?? 0) + 1;
return acc;
}, {});
// { mela: 3, pera: 1, kiwi: 1 }Menemukan maks / mnt
const nums = [3, 7, 1, 9, 4];
const max = nums.reduce((a, n) => (n > a ? n : a), -Infinity);
// 9(Dalam praktiknya untuk maks/mnt, pilihlah Math.max(...nums); ini adalah contoh didaktik.)
Cobalah
Tentukan `total(item)`: Anda menerima array objek { harga, kuantitas } dan mengembalikan total pengeluaran (jumlah harga*kuantitas). Gunakan pengurangan.
Tunjukkan petunjuk
kurangi((a, itu) => a + itu.harga * itu.kuantitas, 0)
Solusi tersedia setelah 3 upaya
Tinjau latihan
Definisikan `count(words)`: jika diberi array string, kembalikan objek yang memetakan setiap string ke jumlah kemunculannya. Gunakan pengurangan dengan akumulator objek.
Tunjukkan petunjuk
acc[p] = (acc[p] ?? 0) + 1; kembali acc;
Solusi tersedia setelah 3 upaya