typescript - Hitta antalet unika objekt i en array i Angular 7
Säg att jag har en följande array som innehåller följande objekt:
array = [{name: 'foo', number: 1}, {name: 'foo', number: 1}, {name: 'bar', number: 1}]
Hur skulle jag gå tillväga för att hitta antalet foo i denna array? Jag gör för närvarande
search(name, array) {
let count = 0;
for (let i = 0; i < array.length; i++) {
if (array[i].name=== name) {
count++;
}
}
return count;
}
Jag skulle vilja kunna köra search()-funktionen och kunna få antalet objekt som har namnet foo och antalet objekt som har namnet bar istället för att behöva ange namnet på objektet själv.
Svar #1
let array = [{
name: 'foo',
number: 1
}, {
name: 'foo',
number: 2
}, {
name: 'bar',
number: 1
}]
function count(input) {
var output = {};
array.forEach(item => {
if (output[item.name]) {
output[item.name] += item.number;
} else {
output[item.name] = item.number;
}
});
return output;
}
var result = count(array);
console.log(result);Du kan iterera över objekten och lägga till antalet för varje namn som är detsamma. Hoppas detta är vad du letade efter, annars låt mig veta
Svar #2
Använd filter-funktionen
let array = [{name: 'foo', number: 1}, {name: 'foo', number: 1}, {name: 'bar', number: 1}]
let count = array.filter(e => e.name === "foo").length;
console.log(count)