Задать вопрос
@leyarthemes

Как сложить несколько двумерных массивов по индексам?

Всем здравствуйте, подскажите, пожалуйста, как организовать на чистом JS применение математических операций к элементам нескольких двумерных массивов, например, если их 3, то:
var arr1 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]];
var arr2 = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]];
var arr3 = [[100, 200, 300, 400], [500, 600, 700, 800], [900, 1000, 1100, 1200]];

Нужно получить на выходе один массив со значениями:
var arr4 = [[111, 222, 333, 444], [555, 666, 777, 888], [999, 1110, 1231, 1322]];

Как организовать этот код так же для того, чтобы можно было применять не только сумму, а и, например умножение или вывод самого большого значения. Спасибо.
  • Вопрос задан
  • 580 просмотров
Подписаться 1 Простой 3 комментария
Решение пользователя Роман К ответам на вопрос (2)
lastuniverse
@lastuniverse
Всегда вокруг да около IT тем
Без всяких оптимизаций (голое сложение в цикле):
код
var arr1 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]];
var arr2 = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]];
var arr3 = [[100, 200, 300, 400], [500, 600, 700, 800], [900, 1000, 1100, 1200]];

function summ_array(...arrs){
   return arrs.reduce((acc,arr)=>{
      if( Array.isArray(arr))
         arr.forEach((subarr, i)=>{
            if(!Array.isArray(acc[i])) 
               acc[i] = []
            if( Array.isArray(subarr))
               subarr.forEach((v, j)=>{
                  if(!acc[i][j]) 
                     acc[i][j] = 0;
                  acc[i][j]+=v;
               });   
         });
      return acc;
   },[]);
}
var summ = summ_array(arr1, arr2, arr3);
console.log(summ);




Ответ написан