[英]JS Array with arrays of objects - Group and sum properties
我有一個帶有多個數組的數組,其中包含對象(來自HTTP請求的響應)
大數組:
datas = [
[
{
data: {
pid: 107,
value: 5
}
status: 200
},
{
data: {
pid: 108,
value: 42
}
}
],
[
{
data: {
pid: 107,
value: 64
}
status: 200
},
{
data: {
pid: 108,
value: 322
}
}
]
]
好吧,那我怎樣才能創建一個新的數組(或對象),該數組按pid和分配給pid的值求和? 在數組內部使用SUM by屬性不是典型的問題。
我嘗試過的
datas.forEach((d,k1) => {
d.forEach((e,k2) => {
total += e.data.value
newArr[k2] = total;
})
})
您可以將Array.prototype.reduce
與內部Array.prototype.forEach
一起使用,以遍歷內部數組並將PID分組為Object
:
const data = [ [ { data: { pid: 107, value: 5 }, status: 200 }, { data: { pid: 108, value: 42 } } ], [ { data: { pid: 107, value: 64 }, status: 200 }, { data: { pid: 108, value: 322 } } ] ]; const merged = data.reduce((merged, innerArr) => { innerArr.forEach(({data}) => { merged[data.pid] = (merged[data.pid] || 0) + data.value; }); return merged; }, {}); console.log(merged);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.