- Published on
Grupowanie elementów tablic z groupBy()
Na horyzoncie dobrze zarysowała się już nowa propozycja rozszerzająca prototyp tablic w JavaScript. Array.prototype.groupBy
bo o tym będzie ten artykuł, pozwoli na grupowanie elementów tablicy do poszczególnych kluczy, które będą zawarte w zwróconym obiekcie. Obecnie specyfikacja znajduje się w Stage 3, więc jest kompletna i czeka na właściwą implementację w przeglądarkach.
Jak to działa?
Działanie jest bardzo proste. Wywołujemy na tablicy metodę groupBy
, a w callbacku otrzymujemy:
item
czyli element tablicyindex
czyli indeks licząc od zeraarray
czyli referencję
Zwrócona wartość to natomiast będzie klucz, do którego będzie przypisany item
.
const array = [1, 2, 3, 4, 5, 6]
const groups = array.groupBy((item, index, array) => {
return item % 2 === 0 ? 'even' : 'odd'
})
console.log(groups) // => { odd: [1, 3, 5], even: [2, 4, 6] }
Ale to nie koniec. W ramach specyfikacji jest również druga metoda groupByToMap. Robi ona to samo co jej brat, lecz zwraca mapę.
const array = [1, 2, 3, 4, 5, 6]
const groups = array.groupByToMap((item, index, array) => {
return item % 2 === 0 ? 'even' : 'odd'
})
console.log(groups) // => Map { odd: [1, 3, 5], even: [2, 4, 6] }
Proposal
Dokument możecie przeczytać na GitHubie, który opisuje specyfikację oraz intencję za nim idącą. core-js zawiera już implementację polyfilla.