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
}]
}));