Суммируйте значения объектов в массивах массива - PullRequest
1 голос
/ 24 мая 2019

Я пытаюсь суммировать значения из объектов.У меня есть массив массивов объектов.

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

другими словами, нужно получить общее количествосумма «количества» для всех объектов в массиве [1], массиве [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})
})

с вышеуказанными попытками получить ошибку "уменьшить не определить", также я использую Typescript.

Любое предложение или идея?

Спасибо заранее.

Ответы [ 3 ]

1 голос
/ 24 мая 2019

Просто используйте map и reduce:

const quantities = arrayOfArraysOfObjects.map(a => a.reduce((acc, { quantity }) => acc + +quantity, 0));
1 голос
/ 24 мая 2019
let res = 0;
arr.forEach((data1,index,arr)=>{
    data1.forEach(({qunt})=>{
        res+=qunt
    })
})
console.log(res)
1 голос
/ 24 мая 2019

Рассмотрим arrayOfArraysOfObjects - имя переменной. Вам нужно использовать map() в основном массиве и получить сумму каждого массива, используя reduce()

let res = arrayOfArraysOfObjects.map(x => x.reduce((ac,a) => ac + a.quantity,0));
...