Object.groupBy() to statyczna metoda pozwalająca grupować elementy.
Jej składnia jest następująca:
Object.groupBy(items,callbackFn)
gdzie items jest listą, którą będziemy grupować, a callbackFn jest funkcją, którą będziemy wywoływać dla każdego elementu z listy. Funkcja ta będzie określać grupę, do której element ma trafić na nowej liście.
Jako przykład posłuży nam poniższa lista książek:
constbooks=[{title:'1984',genre:'Dystopian fiction',year:1949},{title:'To Kill a Mockingbird',genre:'Classic literature',year:1960},{title:'The Great Gatsby',genre:'Modernist novel',year:1925},{title:'The Catcher in the Rye',genre:'Classic literature',year:1951},{title:'Pride and Prejudice',genre:'Romance novel',year:1813}];
Chcąc stworzyć nową listę, w której pozycje będą pogrupowane gatunkami, wystarczy wywołać Object.groupBy w następujący sposób:
Object.groupBy(books,({genre})=>genre)// wynik:{"Dystopian fiction":[{"title":"1984","genre":"Dystopian fiction","year":1949},],"Classic literature":[{"title":'To Kill a Mockingbird',"genre":'Classic literature',"year":1960},{"title":'The Catcher in the Rye',"genre":'Classic literature',"year":1951},],"Romance novel":[{"title":'Pride and Prejudice',"genre":'Romance novel',"year":1813}],"Modernist novel":[{"title":"The Great Gatsby","genre":"Modernist novel","year":1925}]}
Bardziej zaawansowanym przykładem może być podział listy na grupy obejmujące nowe książki (wydane po 1900 roku) i stare (pozostałe):
Object.groupBy(books,({year})=>year>1900?"new":"old")// wynik:{"new":[{"title":"1984","genre":"Dystopian fiction","year":1949},{"title":"The Great Gatsby","genre":"Modernist novel","year":1925},{"title":'To Kill a Mockingbird',"genre":'Classic literature',"year":1960},{"title":'The Catcher in the Rye',"genre":'Classic literature',"year":1951},],"old":[{"title":'Pride and Prejudice',"genre":'Romance novel',"year":1813}]}