JSFiddle - React, Tailwind, and code Playground

by Glutamat

JavaScript

//test

var arrComplex = [
    { N: { Value: 10 }, Name: "Foo" },
    { N: { Value: 10 }, Name: "Bar" },

    { N: { Value: 20 }, Name: "Foo" },
    { N: { Value: 20 }, Name: "Bar" }
];

function groupBy (arr,key,ele) {
    var undefined, curK,curE,
        resultObj = {},
        resultArr=[];
    
    key = key.split (".");
    ele = ele.split (".");
    
    for (var h=0; h < arr.length; h++) {
        curK = curE = arr [h];
        for (var i=0,len=Math.max (key.length,ele.length);i<len;i++) {
            curK=curK[key [i]]||curK;
            curE=curE[ele [i]]||curE;
        }
        if (resultObj[curK] === undefined) {
            resultObj [curK] = {
                Elements : [curE],
                key: curK
            }
        } else {
            resultObj [curK].Elements.push (curE);  
        }
    }
    for (var k in resultObj) {
         resultArr.push (resultObj [k]);   
    }
    return resultArr;
}


function groupBy2 (arr,key,ele) {
    var undefined,curK,curE,
        resultObj = {},
        resultArr=[];
    
    for (var h=0; h < arr.length; h++) {
        curK = curE = arr [h];
        for (var i=0,len=Math.max (key.length,ele.length);i<len;i++) {
            curK=curK[key [i]]||curK;
            curE=curE[ele [i]]||curE;
        }
        if (resultObj[curK] === undefined) {
            resultObj [curK] = {
                Elements : [curE],
                key: curK
            }
        } else {
            resultObj [curK].Elements.push (curE);  
        }
    }
    for (var k in resultObj) {
         resultArr.push (resultObj [k]);   
    }
    return resultArr;
}


function groupBy3 (arr,key,ele) {
    var undefined,curK,curE,
        resultObj = {};
    
    key = key.split (".");
    ele = ele.split (".");
    
    for (var h=0; h < arr.length; h++) {
        curK = curE = arr [h];
        for (var i=0,len=Math.max (key.length,ele.length);i<len;i++) {
            curK=curK[key [i]]||curK;
            curE=curE[ele [i]]||curE;
   ...