JSFiddle - React, Tailwind, and code Playground
by pierian_design
HTML
<div id="out"></div>
JavaScript
var res = [
[[1, 2], [5, 6, 700], [9, 10, 11, 12]],
[[10, 20, 30], [50, 60, 70, 80]],
[["gsg", 200, 300, 400], [500, 600], [900, 1000], [1100, 1200]]
]
/*-------------------------------------------------------------*/
function callSum(a, b) {
return a + b;
}
function callCount(v, c) {
return c;
}
function callCounta(v, c) {
return c;
}
function callAverage(v, c) {
return v / c;
}
function callMax(a, b) {
return Math.max(a, b);
}
function callMin(a, b) {
return Math.min(a, b);
}
function isNumber(v) {
if (typeof v == "number") {
return 1;
} else {
return 0;
}
}
/*-------------------------------------------------------------*/
function prepareValues(arrs, func, func2){
var posthandler;
var count;
if(!func2){
posthandler = function(v, c){
return v;
}
}else{
posthandler = func2;
}
var resarr = arrs.reduce(function(acc, arr){
if(Array.isArray(arr)){
arr.forEach(function(subarr, i){
if(Array.isArray(subarr)){
if(!Array.isArray(acc[i])){
acc[i] = [];
}
subarr.forEach(function(v, j){
count = isNumber(v);
if(!acc[i][j]){
acc[i][j] = {value: v, count: count};
}else{
acc[i][j].value = func(acc[i][j].value,v);
if(count > 0){
acc[i][j].count++;
}
}
});
}
});
}
return acc;
},[]);
return resarr.map(function(subarr){
...