Teknik Grouping By Object Key di Javascript

Posted on

cara mengelompokan objek menurut key yang sama di javascript – halo.. di kesempatan kali ini, saya akan memberikan panduan singkat mengenai cara grouping object menurut key. Sebelum ke tutorialnya, saya akan menjelaskan mengenai kegunaan grouping ini.

 
Apa itu grouping by obeject key?
Hakekatnya, ini yakni teknik bagi mengubah arsitektur object menjadi lebih gampang dimengerti, lebih singkat, dan lebih gampang diimplementasikan di client. Diantara contohnya yakni seperti ini.
Misal, kita mempunyai object

 

 

var mobil = [

    {
        'merk': 'audi',
        'year': '2012'
    },
    {
        'merk': 'audi',
        'tahun': '2013'
    },
    {
        'merk': 'ford',
        'tahun': '2012'
    },
    {
        'merk': 'ford',
        'tahun': '2015'
    },
    {
        'merk': 'kia',
        'tahun': '2012'
    },
]

Objek tersebut terlihat terpisah satu sama lain. Misal, kita akan grouping objek tersebut menurut key “merk”. Jadi, mobil yang merknya sama akan tergabung pada sebuah objek yang sama. Hasilnya akan seperti ini

var mobil = {
  'audi': [
    {
      'tahun': '2012'
    },
    {
      'tahun': '2013'
    },
  ],
  'ford': [
    {
      'tahun': '2012'
    },
    {
      'tahun': '2015'
    }
  ],
  'kia': [
    {
      'tahun': '2012'
    }
  ]
}

 

Ini membangun object menjadi terstruktur, gampang dilihat, dan diimplementasikan. Oke, jadi bagaimana caranya?
Saya telah mempunyai kode function ajaib bagi grouping object menurut key. Berikut ini kodenya

 

function groupBy(xs, f) {
  return xs.reduce((r, v, i, a, k = f(v)) => ((r[k] || (r[k] = [])).push(v), r), {});
}

 

Contoh Implementasi Kode

 

var mobil = [
    {
        'merk': 'audi',
        'year': '2012'
    },
    {
        'merk': 'audi',
        'tahun': '2013'
    },
    {
        'merk': 'ford',
        'tahun': '2012'
    },
    {
        'merk': 'ford',
        'tahun': '2015'
    },
    {
        'merk': 'kia',
        'tahun': '2012'
    },
]
var result = groupBy(mobil, (m) => m.merk)


Result Grouping By Merk:

{
  'audi': [
    {
      'tahun': '2012'
    },
    {
      'tahun': '2013'
    },
  ],
  'ford': [
    {
      'tahun': '2012'
    },
    {
      'tahun': '2015'
    }
  ],
  'kia': [
    {
      'tahun': '2012'
    }
  ]
}
Oke, sekianlah tutorial kali ini. Semoga bermanfaat! Terima Kasih!
(Visited 8 times, 1 visits today)

Leave a Reply

Your email address will not be published. Required fields are marked *