Sea
martie 20, 2020, 2:51pm
1
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
zshare
(Eduard-Dan Stănescu)
martie 20, 2020, 5:27pm
3
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