#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
при каждом запуске codepen5. Я просто изменил имя, потому что я должен использовать определенные имена для упражнения, но если вы посмотрите, я не использую sum, я просто забыл его удалить