JSFiddle - React, Tailwind, and code Playground

by pierian_design

HTML

<div id="out">

</div>

JavaScript

var arr1 = [[1, 2], [5, 6, 7], [9, 10, 11, 12]];
var arr2 = [[10, 20, 30], [50, 60, 70, 80]];
var arr3 = [[100, 200, 300, 400], [500, 600], [900, 1000], [1100, 1200]];

function summ_array(...arrs){
  let posthandler = arrs.pop();
  let handler = arrs.pop();
  if( typeof handler !== "function" ){
  	arrs.push(handler);
    handler = posthandler;
    posthandler = (v,c)=>v;
  }
  
  const resarr = arrs.reduce((acc,arr)=>{
    if( Array.isArray(arr))
      arr.forEach((subarr, i)=>{
      if( Array.isArray(subarr)){
        if(!Array.isArray(acc[i])) 
          acc[i] = [];
          subarr.forEach((v, j)=>{
          if(!acc[i][j]){
            acc[i][j] = {value:v, count:1};
          }else{
            acc[i][j].value = handler(acc[i][j].value,v);
            acc[i][j].count++;
          }
        });
      }
    });
    return acc;
  },[]);
  // return resarr;
	return resarr.map(subarr=>{
    if( Array.isArray(subarr))
      return subarr.map(item=>{
        if( typeof item === "object" && !Array.isArray(item))
          return posthandler(item.value,item.count);
        return item;
      });
  
    return subarr;        
  });

}
var summ = summ_array(arr1, arr2, arr3, (a,b)=>a+b);
var substract = summ_array(arr1, arr2, arr3, (a,b)=>a-b);
var multiple = summ_array(arr1, arr2, arr3, (a,b)=>a*b);
var max = summ_array(arr1, arr2, arr3, (a,b)=>Math.max(a,b));
var min = summ_array(arr1, arr2, arr3, (a,b)=>Math.min(a,b));
var mean = summ_array(arr1, arr2, arr3, (a,b)=>a+b, (v,c)=>v/c);
console.log(summ);

const display = document.getElementById("out");
display.innerHTML = "исходные данные:" + "<br>"
                  + JSON.stringify(arr1) + "<br>"
                  + JSON.stringify(arr2) + "<br>"
                  + JSON.stringify(arr3) + "<hr>"
                  + "сумма массивов:" + "<br>"
                  + JSON.stringify(summ) + "<hr>"
                  + "разность массивов:" + "<br>"
                  + JSON.stringify(substract) + "<hr>"
                  +...