Ce face Object.groupBy / Map.groupBy
Funcția primește fiecare element și returnează cheia grupului. Rezultatul are câte o proprietate pentru fiecare cheie, cu tabloul elementelor din acel grup, în ordinea inițială.
Object.groupBy returnează un obiect fără prototip, cu chei text. Map.groupBy returnează un Map, deci cheile pot fi de orice tip, inclusiv obiecte sau numere.
Parametri
| Parametru | Descriere |
|---|---|
lista |
Orice iterabil (tablou, Set etc.). |
functie |
Primește (element, indice) și returnează cheia grupului. |
Ce returnează
Un obiect (fără prototip) sau un Map cu tablourile grupurilor.
Exemple
Exemplul 1: Produse pe categorii
const produse = [
{ nume: "Mere", categorie: "fructe" },
{ nume: "Morcovi", categorie: "legume" },
{ nume: "Pere", categorie: "fructe" },
];
const grupuri = Object.groupBy(produse, (p) => p.categorie);
console.log(grupuri.fructe.map((p) => p.nume));
console.log(Object.keys(grupuri));
Rezultat
[ 'Mere', 'Pere' ]
[ 'fructe', 'legume' ]
Exemplul 2: Note de trecere și restanțe, cu Map.groupBy
const note = [9, 4, 7, 3, 10];
const trecut = Map.groupBy(note, (n) => n >= 5);
console.log(trecut.get(true), trecut.get(false));
Rezultat
[ 9, 7, 10 ] [ 4, 3 ]
Greșeli frecvente
- Apelezi metoda pe tablou:
produse.groupBy(...)dăTypeError. Metoda este peObjectși peMap. - Folosești rezultatul lui
Object.groupBycuhasOwnProperty. Obiectul nu are prototip; foloseșteObject.hasOwnsau operatorulin.
Comenzi înrudite
reduce: Combină toate elementele unui tablou într-o singură valoare: o sumă, un obiect, un text.Map (get, set, has, delete): O colecție de perechi cheie–valoare în care cheile pot fi de orice tip și ordinea este păstrată.Object.entries: Transformă un obiect într-un tablou de perechi [cheie, valoare], ușor de parcurs.