我编写了一个方法来计算数组中“启用”设置为“true”的对象数量。
每当它在数组中找到“启用”设置为“true”的对象时,我都会添加 1 来进行计数。
如何在不使用“计数器”变量并使用减少或过滤的情况下实现这一目标?
这是我的代码:
function getCount() {
const arr =[[{ "enabled": true }], [{ "enabled": false}, {"enabled": true}]];
var count = 0;
arr.forEach(function(ar){
ar.forEach(function(obj){
if(obj.enabled) {
count++;
}
})
});
return count;
}
最佳答案
请看下面,我添加了一条评论:
[].concat(...arr) /* flatten the array */
.filter(item => item.enabled) /* return only enabled: true */
.length /* get the count */
const arr = [
[{
"enabled": true
}],
[{
"enabled": false
}, {
"enabled": true
}]
];
var enabledCount = [].concat(...arr).filter(item => item.enabled).length
console.log(enabledCount)
如果你愿意,你也可以使用reduce
const arr = [
[{
"enabled": true
}],
[{
"enabled": false
}, {
"enabled": true
}]
];
var enabledCount = arr.reduce(
(accumulator, currentValue) => accumulator.concat(currentValue), []
).filter(item => item.enabled).length
console.log(enabledCount)
关于javascript - 在javascript中使用reduce或filter计算对象的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53083750/