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

Sun*_*nny 3 javascript reduce filter multidimensional-array ecmascript-6

我编写了一个方法来计算数组中“启用”设置为“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;           
}
Run Code Online (Sandbox Code Playgroud)

Dar*_*ney 8

请看下面,我添加了一条评论:

[].concat(...arr) /* flatten the array */
.filter(item => item.enabled) /* return only enabled: true */
.length /* get the count */
Run Code Online (Sandbox Code Playgroud)

[].concat(...arr) /* flatten the array */
.filter(item => item.enabled) /* return only enabled: true */
.length /* get the count */
Run Code Online (Sandbox Code Playgroud)

或者如果你愿意的话你可以使用reduce

const arr = [
  [{
    "enabled": true
  }],
  [{
    "enabled": false
  }, {
    "enabled": true
  }]
];
var enabledCount = [].concat(...arr).filter(item => item.enabled).length
console.log(enabledCount)
Run Code Online (Sandbox Code Playgroud)