说我有一个包含以下对象的以下数组:
array = [{name: 'foo', number: 1}, {name: 'foo', number: 1}, {name: 'bar', number: 1}]
我将如何查找该数组中foo
的数量?我目前正在
search(name, array) {
let count = 0;
for (let i = 0; i < array.length; i++) {
if (array[i].name=== name) {
count++;
}
}
return count;
}
我希望能够运行search()
函数,并能够获取名称为foo
的对象数和名称为bar
的对象数,而不是必须传递对象本身的名称。
答案 0 :(得分:3)
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);
您可以遍历项目,并为每个相同的名称添加计数。希望这就是您想要的,否则请告诉我
答案 1 :(得分:1)
使用filter
函数
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)