Raggruppare oggetti in Javascript con groupBy

Mattepuffo's logo
Raggruppare oggetti in Javascript con groupBy

Raggruppare oggetti in Javascript con groupBy

In questo articolo vediamo come raggruppare oggetti in Javascript usando la funzione groupBy.

La possiamo usare sia su Object che su Map.

Vediamo un esempio per entrambi, cominciando da Object:

const libri = [
  {titolo: 'IT', autore: 'Stephen King'},
  {titolo: 'Odissea', autore: 'Clive Cussler'},
  {titolo: 'Insomnnia', autore: 'Stephen King'},
];

const groupByAutore = Object.groupBy(libri, ({autore}) => autore);
console.log(groupByAutore);

Il risultato sarà:

{
    "Stephen King": [
        {
            "titolo": "IT",
            "autore": "Stephen King"
        },
        {
            "titolo": "Insomnnia",
            "autore": "Stephen King"
        }
    ],
    "Clive Cussler": [
        {
            "titolo": "Odissea",
            "autore": "Clive Cussler"
        }
    ]
}

Supponiamo invece di avere una lista di prodotti a magazzino, e di voletverificare quali sono da ordinare e quali no:

const magazzino = [
  {nome: 'mele', categoria: 'frutta', qta: 10},
  {nome: 'scarpe', categoria: 'abbigliamento', qta: 23},
  {nome: 'fragole', categoria: 'frutta', qta: 9},
  {nome: 'pantaloni', categoria: 'abbigliamento', qta: 9},
];

const daOrdinare = {ordinare: true};
const sonoOk = {ordinare: false};

const group = Map.groupBy(magazzino, ({qta}) => qta < 10 ? daOrdinare : sonoOk);
console.log(group.get(daOrdinare));

Questo sarà il risultato:

[
    {
        "nome": "fragole",
        "categoria": "frutta",
        "qta": 9
    },
    {
        "nome": "pantaloni",
        "categoria": "abbigliamento",
        "qta": 9
    }
]

Enjoy!


Condividi

Commentami!