3 回答

TA贡献1831条经验 获得超4个赞
您将嵌套数组作为对象的值,您需要两个内部循环来获取所需的求和属性
const
obj = { A: [[{ count: "1.00", common: false }, { count: "1.00", common: true }], [{ count: "1.00", common: false }, { count: "1.00", common: true }]], B: [[{ count: "1.00", common: false }, { count: "1.00", common: true }], [{ count: "1.00", common: false }, { count: "1.00", common: true }]] },
total = Object
.values(obj)
.reduce((r, outer) => {
outer.forEach(inner =>
inner.forEach(({ common, count }) => r += common ? +count : 0)
);
return r;
}, 0);
console.log(total); // 4

TA贡献1824条经验 获得超8个赞
另一种方法是使用以下方法拼合数组,然后应用:concatreduce
const obj = {
"A": [
[{"count": "1.00", "common": false}, {"count": "1.00", "common": true}],
[{"count": "1.00", "common": false}, {"count": "1.00", "common": true}]
],
"B": [
[{"count": "1.00", "common": false}, {"count": "1.00", "common": true}],
[{"count": "1.00", "common": false}, {"count": "1.00", "common": true}]
]
};
const sum = [].concat(...([].concat(...Object.values(obj))))
.reduce(( acc, cur ) => acc + (cur.common ? +cur.count : 0), 0)
console.log(`Total count = ${sum}`);

TA贡献1906条经验 获得超10个赞
这是另一种方式
const obj = {
"A": [
[
{
"count": "1.00",
"common": false
},{
"count": "1.00",
"common": true
}
],
[
{
"count": "1.00",
"common": false
},
{
"count": "1.00",
"common": true
}
]
],
"B": [
[
{
"count": "1.00",
"common": false
},{
"count": "1.00",
"common": true
}
],
[
{
"count": "1.00",
"common": false
},
{
"count": "1.00",
"common": true
}
]
]
};
let total = 0;
Object.values(obj).forEach(c => c.forEach(arr => total += arr.filter(o => o.common).length));
console.log("Total: " + total);
添加回答
举报