我正在尝试对对象的值求和。我有一组对象数组。
(7) [Array(5), Array(29), Array(32), Array(20), Array(10), Array(1), Array(1)]
需要分别对每个数组对象的“数量”值求和,例如:
1: Array(29)
0:
id: "PXvWizOLCPbHCUzHxUoK"
productName: "someProduct"
productPrice: "146"
quantity: 3
1:
id: "PXvWizOLCPbHCUzHxUoK"
productName: "someProduct"
productPrice: "156"
quantity: 7
etc...
换句话说,需要获取array [1],array [2] ...中所有对象的“数量”总和。
一些尝试:
1)
let quantityOfProduct = arrayOfArraysOfObjects[0].reduce((acc, current) => {
return{
quantity: acc.quantity + current.quantity
}
})
2)
let result:any = []
arrayOfArraysOfObjects[0].reduce((acc, current) => {
result.push({[current.id]: acc.quantity +current.quantity})
})
通过上述尝试得到错误消息“ reduce not defined”,我也在使用Typescript。
有什么建议或想法吗?
先谢谢您。
答案 0 :(得分:1)
考虑arrayOfArraysOfObjects
是变量的名称。您需要在主数组上使用map()
,并使用reduce()
let res = arrayOfArraysOfObjects.map(x => x.reduce((ac,a) => ac + a.quantity,0));
答案 1 :(得分:1)
只需使用map
和reduce
:
const quantities = arrayOfArraysOfObjects.map(a => a.reduce((acc, { quantity }) => acc + +quantity, 0));
答案 2 :(得分:1)
let res = 0;
arr.forEach((data1,index,arr)=>{
data1.forEach(({qunt})=>{
res+=qunt
})
})
console.log(res)