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);
添加回答
舉報