JSFiddle - React, Tailwind, and code Playground

by harsh dand

JavaScript

function arraySort(data, cfg) {
    var fields = cfg.fields || undefined;

    function _arraySort(a, b, desc, cs) {
        var desc = desc || false;
        var cs = cs || false;
        if (cs && typeof a == 'string') {
            a = a.toLowerCase();
            b = b.toLowerCase();
        }

        if (!desc) {
            if (a < b) return -1;
            else if (a > b) return 1;
            else return 0;
        } else {
            if (a > b) return -1;
            else if (a < b) return 1;
            else return 0;
        }
    }

    var sortedData = data.sort(function (obj1, obj2) {
        var out;
        for (var i = 0; i < fields.length; i++) {
            debugger;
            //console.log('cool');
            var a = obj1[fields[i].name];
            var b = obj2[fields[i].name];
            var desc = fields[i].desc ? true : false;
            out = _arraySort(a, b, desc, cfg.caseSensitive);
            console.log(out);
            if (out != 0) return out;
        }
        return 0;
    });

    return sortedData;
}
var data = [{
    'MATNR': 'harsh',
        'DESCR': 'Material 1',
        'DATAB': '01/01/2014',
        'DATBI': '31/12/9999'
}, {
    'MATNR': 'harsh',
        'DESCR': 'Material 1',
        'DATAB': '01/01/2014',
        'DATBI': '31/12/9999'
}, {
    'MATNR': 'wajid',
        'DESCR': 'Material 3',
        'DATAB': '01/06/2014',
        'DATBI': '31/12/9999'
}, {
    'MATNR': 'nish',
        'DESCR': 'Material 4',
        'DATAB': '01/07/2014',
        'DATBI': '31/12/9999'
}, {
    'MATNR': 'wajid',
        'DESCR': 'Material 4',
        'DATAB': '01/01/2015',
        'DATBI': '31/12/9999'
}];

console.log(arraySort(data, {
    caseSensitive: true,
    fields: [{
        name: 'DESCR',
        desc: true
    }, {
        name: 'MATNR',
        desc: true
    }]
}));