javascript - 在javascript中使用reduce或filter计算对象的数量

标签 javascript multidimensional-array filter ecmascript-6 reduce

我编写了一个方法来计算数组中“启用”设置为“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/

相关文章:

angularjs - Angular ng 重复过滤器 : ¿How to specify filter fields?

javascript - 当第二个元素应该被推送时,json 键被分配一个数字而不是数组

javascript - 如何使用 Javascript 来记录多项选择的分数

javascript - 压缩 if 语句以查找值适合的范围

C++ 多维数组和指针名称括号

c - 二维数组的动态内存分配

php - MongoDB:如何查询嵌套数组?

php - 提交表单后如何导航到同一选项卡?

python - 如何在 Django 中结合过滤和分页?

javascript - 默认为 MomentJS/Date 对象 UTC