как суммировать массивы массива? - PullRequest
1 голос
/ 23 сентября 2019

Я знаю, что мы можем суммировать элементы массива, используя reduce(), но что, если у нас есть массив массивов.Например:

var result=[10,20,30];
result.reduce((a, b) => a + b)

будет возвращено 60

, но если у нас будет

result=[
  [10,20,30],
  [20,30,40],
  [60,70,80]
]
console.log(result);

как мы можем получить конечный результат как result=[60,90,210], используя Reduce?

Ответы [ 3 ]

4 голосов
/ 23 сентября 2019

Первый вы можете map и использовать внутри карты reduce

result=[
  [10,20,30],
  [20,30,40],
  [60,70,80]
  ]
const final = result.map(item => item.reduce((a, b)=> a + b, 0))

console.log(final)
1 голос
/ 23 сентября 2019

Вы можете использовать Array.prototype.map () для циклического прохождения каждого из подмассивов во внешнем массиве.Метод map () создает новый массив с результатами вызова предоставленной функции для каждого элемента в вызывающем массиве.

Как только вы получите подмассив, следуйте предыдущему подходу, чтобы найтисумма с использованием метода Reduce ().

result = result.map(subArray => subArray.reduce((a, b) => a + b))
0 голосов
/ 25 сентября 2019

Если вы хотите использовать только .reduce, я предлагаю этот код:

 result=[
  [10,20,30],
  [20,30,40],
  [60,70,80]
]
const sum = result.reduce((a, b) => {
  return [...a.concat(b.reduce((a, b) => a + b, 0))]
}, [])
console.log(sum)
...