Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

JavaScript Lanjutan

Pelajaran 3 dari 22

Method array lanjutan

Meringkas ke objek dan meratakan dengan flatMap

Setelah pelajaran ini kamu bisa mengelompokkan data dengan reduce ke sebuah objek dan meratakan array bersarang dengan flat dan flatMap.

±13 menitDiperiksa 28 Sep 2026

Materi

reduce tidak hanya menghasilkan angka. Bila nilai awalnya objek kosong {}, penampungnya bisa diisi satu kunci per kelompok: jumlah pelanggan per kota, total penjualan per kategori, atau daftar nama per divisi. Setiap putaran membaca atau membuat kuncinya, memperbarui nilainya, lalu wajib mengembalikan penampung itu untuk putaran berikutnya. Object.entries mengubah objek hasilnya menjadi array pasangan [kunci, nilai] yang bisa diurutkan atau dipetakan lagi.

const tiket = ["teknis", "tagihan", "teknis", "akun", "teknis"];
const perJenis = tiket.reduce((hitung, jenis) => {
  hitung[jenis] = (hitung[jenis] || 0) + 1;
  return hitung;
}, {});
// { teknis: 3, tagihan: 1, akun: 1 }
Object.entries(perJenis); // [["teknis", 3], ["tagihan", 1], ["akun", 1]]

Data sering datang bersarang: setiap pesanan memuat array barang, setiap kelas memuat array siswa. flat membuka satu tingkat sarang, sehingga [[1, 2], [3]].flat() menjadi [1, 2, 3]. flatMap menjalankan fungsi seperti map lalu membuka hasilnya satu tingkat. Dengan flatMap, pertanyaan seperti barang apa saja yang pernah dipesan dijawab dalam satu langkah. Fungsi yang mengembalikan [] untuk suatu isi membuat isi itu hilang dari hasil, sehingga flatMap juga bisa menyaring dan memetakan sekaligus.

const kelas = [
  { nama: "X-1", siswa: ["Ari", "Bayu"] },
  { nama: "X-2", siswa: ["Cici"] },
];
kelas.map((k) => k.siswa);     // [["Ari", "Bayu"], ["Cici"]]
kelas.flatMap((k) => k.siswa); // ["Ari", "Bayu", "Cici"]

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke