簡體   English   中英

具有對象數組的JS數組-組和總和屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM