JSFiddle - React, Tailwind, and code Playground

by pierian_design

JavaScript

var arr1 = [[1, 2, 3, 4], [5, , 7, ], [9, 10, 11, 12]];
var arr2 = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, , ], [90, 100, , ]];
var arr3 = [[100, 200, 300, 400], [, , 700, 800], [900, 1000, 1100, 1200]];

var res = [
    [[1, 2, 3, 4], [5, , 7, ], [9, 10, 11, 12]], 
    [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, , ], [90, 100, , ]], 
    [[100, 200, 300, 400], [, , 700, 800], [900, 1000, 1100, 1200]]
];

function sum(args, func) {
  const result = [];

  const length = Math.max(...args.map((item) => item.length));
  console.log(length);
  for (let i = 0; i < length; ++i) {
    const arr = args.map((item) => item[i]).filter(Boolean);
    const maxLength = Math.max(...arr.map((item) => item.length));
    result.push([]);
    for (let j = 0; j < maxLength; ++j) {
      result[i].push(arr.map((item) => item[j]).filter(Number).reduce(func));
    }
  }

  return result;
}


/* сложить */
console.log(sum(res, (acc, curr) => acc + curr));

/* умножить */
//sum([arr1, arr2, arr3], (acc, curr) => acc * curr);