数组数组中对象的总和

时间:2019-05-24 11:08:50

标签: javascript arrays typescript object ecmascript-6

我正在尝试对对象的值求和。我有一组对象数组。

(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。

有什么建议或想法吗?

先谢谢您。

3 个答案:

答案 0 :(得分:1)

考虑arrayOfArraysOfObjects是变量的名称。您需要在主数组上使用map(),并使用reduce()

获取每个数组的总和
let res = arrayOfArraysOfObjects.map(x => x.reduce((ac,a) => ac + a.quantity,0));

答案 1 :(得分:1)

只需使用mapreduce

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)