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){
       ...