[英]How to use javascript reduce function for objects in an array to get string values
[英]Javascript reduce function use in multiple child array
如果 common === true 在多個子數組下,我正在嘗試計算值計數,但我沒有成功如何使用 java 腳本減少 function 以獲得總計 4
總和應該是 4 因為只有 4 object 有共同 === true
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 = Object.values(obj).reduce((acc, value) => acc + value.reduce((a,b) => a+b.reduce((c,d) => c + (d.common) ? parseInt(d.count) : 0,0),0), 0);
這是另一種方式
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);
您已將 arrays 嵌套為 object 的值,您需要兩個內部循環來獲得求和所需的屬性
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
另一種方法是使用concat
展平數組,然后應用reduce
:
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}`);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.