В цикле, который приводит к нескольким массивам, как вернуть массив с суммой всех из них

#javascript #arrays #sum #push

#javascript #массивы #сумма #толкать

Вопрос:

У меня есть массив строк, который после долгих усилий мне удалось превратить в несколько массивов с помощью цикла. Так что прямо сейчас цикл дает мне что-то вроде:

 [4,5,6,7,8]
[4,5,6,7,8],[1,2,3,4,5]
[4,5,6,7,8],[1,2,3,4,5],[22,33,44,55,66]
 

Если я помещаю возвращаемое значение ниже в коде, я получаю:
[[4,5,6,7,8],[1,2,3,4,5],[22,33,44,55,66]]

Что мне нужно, так это вертикальная сумма этих массивов, так что в данном случае это будет: [27,40,53,66,80]

Пока что я использую знак «.push». Кроме того, консоль.журнал дает мне этот ответ, но возвращает результат «undefined». Любая помощь в этих двух вещах будет приветствоваться!

—-ОБНОВЛЕНИЕ—-

Как кто-то здесь предположил, я попробовал это, но это не работает полностью:

 array=[ [ 1, 2, 4 ], [ 4, 1, 5 ], [ 0, 5, 2 ] ];
let adding=0
const result=[]
for (let i = 0; i < array[0].length;   i) {
    for (let j = 0; j < array.length;   j) {
            adding  = array[j][i];
            }
            result.push(adding);}
console.log(result)
    ```

The ouput is: [ 5, 13, 24 ] instead of [5,8,11]
 

Ответ №1:

1) Вы можете легко достичь результата, используя map и reduce

 const arr = [
  [4, 5, 6, 7, 8],
  [1, 2, 3, 4, 5],
  [22, 33, 44, 55, 66],
];

const result = arr[0].map((_, i) => arr.reduce((acc, curr) => acc   curr[i], 0));
console.log(result) 

2) Использование простых циклов for

 const arr = [
  [4, 5, 6, 7, 8],
  [1, 2, 3, 4, 5],
  [22, 33, 44, 55, 66],
];

const result = [];

for (let i = 0; i < arr[0].length;   i) {
  let sum = 0;
  for (let j = 0; j < arr.length;   j) {
    sum  = arr[j][i];
  }
  result.push(sum);
}

console.log(result); 

Комментарии:

1. Спасибо, хотя я новичок и не понимаю ничего из этого кода, поэтому, если есть более простое решение, я был бы очень благодарен

2. @beginner12345 Добавил другое решение, посмотрите

3. Спасибо! Я попытался воспроизвести его, но это не сработало, есть идеи, что может быть не так? « массив=[ [ 1, 2, 3 ], [ 4, 1, 3 ], [ 0, 5, 0 ] ]; пусть добавление=0 const result=[] for (пусть i = 0; i <array[0].длина; i) { пустьsum=0; для (пусть j = 0; j < array.length; j) { добавление = array[j][i]; } результат.push(добавление);} console.log(результат) «

4. почему вы создаете adding переменную, sum которая уже доступна и сбрасывается 0 при каждом запуске codepen

5. Я просто изменил имя, потому что я должен использовать определенные имена для упражнения, но если вы посмотрите, я не использую sum, я просто забыл его удалить