Ngolah Data Lebih Efisien Pakai reduce() dan reduceRight()
Kalau kamu sering ngolah array di JavaScript, pasti pernah kepikiran, "Gimana caranya bikin kode lebih simpel buat menjumlahkan, menggabungkan, atau mengolah data tanpa harus pakai for
loop?" π€
Nah, di sinilah reduce()
dan reduceRight()
bisa jadi penyelamat! π¦ΈββοΈ
reduce()
mengolah array dari kiri ke kanan.reduceRight()
mengolah array dari kanan ke kiri.
Keduanya powerful banget buat mengurangi data dalam array jadi satu nilai. Bisa buat menjumlahkan angka, menggabungkan string, atau bikin struktur data baru.
Yuk, kita bahas satu per satu dengan contoh biar lebih paham!
Apa Itu reduce()
?
reduce()
digunakan buat mengolah array jadi satu nilai tunggal dengan menerapkan fungsi callback ke setiap elemen array.
Sintaks Dasar:
array.reduce((accumulator, currentValue, index, array) => {
return operasi;
}, nilaiAwal);
Parameter yang Bisa Dipakai:
accumulator
β Nilai sementara yang menyimpan hasil operasi sebelumnya.currentValue
β Elemen yang sedang diproses dalam array.index
β Indeks elemen dalam array (opsional).array
β Array yang sedang diproses (opsional).nilaiAwal
β Nilai awal untukaccumulator
(opsional, default-nya elemen pertama).
Contoh Penggunaan reduce()
1. Menjumlahkan Semua Angka dalam Array
Misalnya kita punya daftar angka dan mau menjumlahkan semuanya.
let angka = [1, 2, 3, 4, 5];
let total = angka.reduce((acc, curr) => acc + curr, 0);
console.log(total);
Output:
15
Penjelasan:
acc
(accumulator) mulai dari 0.curr
adalah elemen yang sedang diproses.- Di setiap iterasi,
acc
bertambah dengan nilaicurr
.
2. Menggabungkan String dalam Array
Misalnya kita punya daftar kata dan mau menggabungkannya jadi satu kalimat.
let kata = ["Belajar", "JavaScript", "itu", "seru"];
let kalimat = kata.reduce((acc, curr) => acc + " " + curr);
console.log(kalimat);
Output:
Belajar JavaScript itu seru
3. Mencari Nilai Maksimum dalam Array
Misalnya kita mau cari angka terbesar dalam array.
let angka = [10, 45, 67, 32, 90, 21];
let max = angka.reduce((acc, curr) => (curr > acc ? curr : acc));
console.log(max);
Output:
90
Penjelasan:
- Jika
curr
lebih besar dariacc
, makacurr
jadiacc
baru.
Apa Itu reduceRight()
?
Hampir sama dengan reduce()
, tapi reduceRight()
mulai dari elemen terakhir dan berjalan ke kiri.
Sintaks Dasar:
array.reduceRight((accumulator, currentValue, index, array) => {
return operasi;
}, nilaiAwal);
Contoh Penggunaan reduceRight()
1. Menggabungkan String dalam Array dari Kanan ke Kiri
Misalnya kita punya daftar kata dan mau menggabungkannya dari belakang.
let kata = ["Belajar", "JavaScript", "itu", "seru"];
let kalimat = kata.reduceRight((acc, curr) => acc + " " + curr);
console.log(kalimat);
Output:
seru itu JavaScript Belajar
Berbeda dengan reduce()
, hasilnya dibalik.
2. Mengalikan Semua Angka dalam Array dari Kanan ke Kiri
Misalnya kita punya daftar angka dan mau mengalikan semuanya.
let angka = [1, 2, 3, 4, 5];
let hasil = angka.reduceRight((acc, curr) => acc * curr, 1);
console.log(hasil);
Output:
120
Sama seperti reduce()
, tapi dimulai dari elemen paling kanan.
Perbedaan reduce()
vs reduceRight()
Metode | Arah Pemrosesan | Kapan Dipakai? |
---|---|---|
reduce() |
Dari kiri ke kanan | Biasanya untuk operasi umum seperti jumlah, rata-rata, atau mencari nilai tertentu |
reduceRight() |
Dari kanan ke kiri | Berguna kalau urutan elemen penting, misalnya untuk membalik string atau operasi lain yang tergantung urutan |
Kapan Sebaiknya Pakai reduce()
atau reduceRight()
?
- Pakai
reduce()
kalau urutan data nggak penting. - Pakai
reduceRight()
kalau urutan data penting, misalnya untuk membalik urutan string atau array. - Jangan pakai
reduce()
ataureduceRight()
kalau hanya butuh mencari elemen, lebih baik pakaifind()
ataufilter()
.
Kesimpulan
reduce()
dipakai buat mengolah semua elemen array jadi satu nilai.reduceRight()
sama sepertireduce()
, tapi berjalan dari kanan ke kiri.- Cocok buat menjumlahkan angka, mencari nilai maksimum, menggabungkan string, atau membuat struktur data baru.
- Lebih efisien dibanding pakai
for
loop manual.
Jadi, kalau butuh cara cepat buat ngolah data dalam array, pakai reduce()
atau reduceRight()
biar lebih simpel dan rapi!