Contorizare duplicate intr-un array de obiecte

Salutare,

Cum pot contoriza de cate ori se duplica valorile intr-un array de obiecte.
Array-ul arata cam asa:

let clienti = [{ idClient: 121, idJudet: 1 }, { idClient: 221, idJudet: 1 }, { idClient: 343, idJudet: 2 }];

Rezultatul dorit:

let rez = [{ idJudet: 1, count: 2 }, { idJudet: 2, count: 1 }];

Multumesc!

const clienti  = [
    { idClient: 121, idJudet: 1 },
    { idClient: 221, idJudet: 1 },
    { idClient: 343, idJudet: 2 }];


let dupes = {};
let rez = [];

clienti.forEach(count => {
    dupes[count.idJudet] = (dupes[count.idJudet] || 0) + 1;
}); //cauta dupicatele si calculeaza frecventa


//formeaza array-ul cu rezultate
//https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
const result = Object.entries(dupes).map(( v) => {
    rez.push({idJudet: v[0], count: v[1]})
});

console.log(rez); // [ { idJudet: '1', count: 2 }, { idJudet: '2', count: 1 } ]

nu face ce vrei tu?

Si poti sa folosesti Object.keys(dupes) si Object.values(dupes) ca sa iti extragi cheile si propietatile.
Mai merge si asta
Ti-as sugera sa te inveti sa cauti pe Google.
Bafta!

LE: Am actualizat codul.

1 Like
const rez = Object.entries(clienti
  .map(function(item){return item.idJudet;})
  .reduce(function(acc, item) { acc[item] = (acc[item] || 0) + 1; return acc;}, {}))
  .map(function(arr){ return {"idJudet": parseInt(arr[0]), "count": arr[1]} });
1 Like