Ngolah Data Lebih Efisien Pakai reduce() dan reduceRight()

Ngolah Data Lebih Efisien Pakai reduce() dan reduceRight()
Photo by Mika Baumeister / Unsplash

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 untuk accumulator (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 nilai curr.

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 dari acc, maka curr jadi acc 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() atau reduceRight() kalau hanya butuh mencari elemen, lebih baik pakai find() atau filter().

Kesimpulan

  • reduce() dipakai buat mengolah semua elemen array jadi satu nilai.
  • reduceRight() sama seperti reduce(), 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!