JavaScriptObiekty i klasy

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
Na tej stronie

Przykład

#
JavaScript
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))
Konsola
['Ania', 'Ola']
['zaawansowany', 'początkujący']

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

#
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.