Object. groupBy()
Grupuje elementy według klucza zwróconego przez funkcję.
- Zwraca
- Obiekt bez prototypu z tablicami elementów w każdej grupie.
- Zmienia oryginał
- Nie
Przykład
#const students = [
{ name: 'Ania', level: 'zaawansowany' },
{ name: 'Kuba', level: 'początkujący' },
{ name: 'Ola', level: 'zaawansowany' }
]
const byLevel = Object.groupBy(students, (s) => s.level)
console.log(byLevel.zaawansowany.map((s) => s.name))
console.log(Object.keys(byLevel))Definicja i zastosowanie
#Metoda Object.groupBy(items, callbackFn) przechodzi po elementach i dla każdego wywołuje funkcję, która zwraca nazwę grupy. Wynikiem jest obiekt, w którym każda grupa to tablica pasujących elementów.
Zastępuje popularny, ale mniej czytelny wzór z reduce(). Grupowanie zadań po statusie, uczniów po poziomie albo produktów po kategorii to teraz jedna linijka.
Zwrócony obiekt nie ma prototypu, więc nie ma metod takich jak hasOwnProperty. Jeśli klucze grup nie są napisami (np. obiekty), użyj Map.groupBy().
Składnia
#Object.groupBy(items, callbackFn)Parametry
#items
obiekt iterowalny
Elementy do pogrupowania, np. tablica.callbackFn
function (element, index)
Funkcja zwracająca nazwę grupy dla elementu.
Obsługa przeglądarek
#Nowość w przeglądarkach · od 2024 roku
Działa w aktualnych wersjach wszystkich głównych przeglądarek. Starsze wersje mogą tego nie obsługiwać.
- Chrome
- Edge
- Firefox
- Safari
Dobre praktyki
#- Przy starszych przeglądarkach to samo osiągniesz przez
reduce()albo niewielki polyfill. - Do grupowania po obiektach lub liczbach bez zamiany na tekst użyj
Map.groupBy().
Powiązane hasła
#Widzisz błąd albo brakuje przykładu? Napisz do nas.