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>"
+...