我有一个像这样的JSON对象:
filters: {
module: {
value: "All",
active: false
},
dates: {
value: [],
active: true
}
}
如何根据此对象计算活动过滤器?
答案 0 :(得分:3)
使用reduce
遍历每个对象的values
,从每个对象中提取active
属性,然后将该布尔值添加到累加器,该布尔值会将其强制为一个数字:< / p>
const obj = {
filters: {
module: {
value: "All",
active: false
},
dates: {
value: [],
active: true
},
foo: {
value: "All",
active: false
},
bar: {
value: [],
active: true
}
}
};
console.log(
Object.values(obj.filters).reduce((a, { active }) => a + active, 0)
);
答案 1 :(得分:1)
使用Object.keys
获取过滤器中的所有键,这将给出一个数组,然后使用reduce
函数计算有效true的数量
let someObj = {
filters: {
module: {
value: "All",
active: false
},
dates: {
value: [],
active: true
}
}
};
let count = Object.keys(someObj.filters).reduce(function(acc, curr) {
if (someObj.filters[curr].active === true) {
acc += 1;
}
return acc;
}, 0);
console.log(count)
答案 2 :(得分:1)
您可以使用Object.keys()
和filter()
var filters = {
module: {
value: "All",
active: false
},
dates: {
value: [],
active: true
}
}
var active = Object.keys(filters).filter(k => filters[k].active);
console.log(active.length)
答案 3 :(得分:0)
您可以尝试
var filters = {
module: {
value: "All",
active: false
},
dates: {
value: [],
active: true
}
};
console.log(Object.values(filters).filter(element => element.active === true).length)
希望这会有所帮助!