JavaScript `Map.groupBy()`: Kelompokkan Data dengan Mudah
1
min read .
Updated on
Kadang saya harus mengelompokkan array atau objek berdasarkan kategori tertentu. Sebelumnya ribet pakai loop atau reduce, tapi sekarang Map.groupBy()
bikin semuanya simpel dan rapi.
Apa Itu Map.groupBy()
?
- Mengelompokkan elemen array ke dalam
Map
. - Key → kriteria kelompok, Value → array elemen yang termasuk kelompok itu.
const groupedMap = Map.groupBy(array, callback);
array
→ data yang mau dikelompokkancallback
→ fungsi untuk menentukan key tiap elemen
Contoh Penggunaan
1. Group Angka Genap/Ganjil
const numbers = [1,2,3,4,5,6,7,8,9,10];
const grouped = Map.groupBy(numbers, n => n % 2 === 0 ? 'even' : 'odd');
console.log(grouped);
// Map(2) { 'odd' => [1,3,5,7,9], 'even' => [2,4,6,8,10] }
2. Group Objek Berdasarkan Property
const products = [
{ name: 'Laptop', category: 'Electronics' },
{ name: 'Shirt', category: 'Clothing' },
{ name: 'Phone', category: 'Electronics' }
];
const groupedProducts = Map.groupBy(products, p => p.category);
console.log(groupedProducts);
// Map(2) {
// 'Electronics' => [{...}, {...}],
// 'Clothing' => [{...}]
// }
3. Group dengan Kriteria Kompleks
const numbers = [1,5,10,15,20,25,30];
const groupedByRange = Map.groupBy(numbers, n => {
if(n <= 10) return '1-10';
if(n <= 20) return '11-20';
return '21-30';
});
console.log(groupedByRange);
// Map(3) { '1-10'=>[1,5,10], '11-20'=>[15,20], '21-30'=>[25,30] }
Kenapa Pakai Map.groupBy()
?
- Key Unik → tidak ada duplikat key
- Preserve Order → urutan tetap sama
- Efisien → akses dan manipulasi data cepat
Perbandingan dengan Object.groupBy()
Map
→ key bisa berbagai tipe, preserve orderObject
→ key string/symbol, order tidak dijaminMap
lebih performan untuk dataset besar atau lookup sering
Kasus Nyata
- Kategori Produk/Users → grouping berdasarkan atribut
- Summary Statistik → kumpulkan data berdasarkan kategori
- Lookup Cepat → akses grouped data tanpa loop panjang
Kesimpulan
Gini deh, Map.groupBy()
itu bikin grouping data di JavaScript jadi bersih, efisien, dan fleksibel. Pada akhirnya, coding lebih cepat tanpa harus ribet pakai loop atau reduce manual.