Javascript zählt eindeutige Werte der Objekteigenschaft in einem Objektarray [Duplikat]
Sep 15 2020
Wie berechne ich die eindeutigen Werte einer Objekteigenschaft, wenn ich ein Array von Objekten habe?
let organisations = [
{
"id": 1,
"name": "nameOne",
},
{
"id": 2,
"name": "nameTwo",
},
{
"id": 3,
"name": "nameOne",
}
]
Wie berechne ich in diesem Fall die Anzahl der eindeutigen Organisationsnamen? Die Antwort hier ist zwei, weil es zwei eindeutige Namen gibt.
Das funktioniert nicht
var counts = this.filteredExtendedDeals.reduce(
(organisations, name) => {
counts[name] = (counts[name] || 0) + 1;
return counts;
},
{}
);
return Object.keys(counts);
Antworten
2 Mr.Polywhirl Sep 15 2020 at 15:24
Sie könnten die Liste in eine reduzieren Setund dann die greifen size.
const organisations = [
{ "id": 1, "name": "nameOne" },
{ "id": 2, "name": "nameTwo" },
{ "id": 3, "name": "nameOne" }
];
const uniqueItems = (list, keyFn) => list.reduce((resultSet, item) =>
resultSet.add(typeof keyFn === 'string' ? item[keyFn] : keyFn(item)),
new Set).size;
console.log(uniqueItems(organisations, 'name'));
console.log(uniqueItems(organisations, org => org.name));