JSFiddle - React, Tailwind, and code Playground
CSS
123 321
a<b -1 1
a>b 1 -1
a=b 0 0
JavaScript
var members = [
{ 'name': 'A', 'group':'Bird', 'rank': 1, 'age': 24},
{ 'name': 'D', 'group':'Bird', 'rank': 4, 'age': 27},
{ 'name': 'C', 'group':'Fox', 'rank': 2, 'age': 9},
{ 'name': 'B', 'group':'Wolf', 'rank': 3, 'age': 13},
{ 'name': 'B', 'group':'Wolf', 'rank': 3, 'age': 2},
{ 'name': 'C', 'group':'Fox', 'rank': 2, 'age': 9},
{ 'name': 'C', 'group':'Fox', 'rank': 2, 'age': 9}
];
var sortJSON = function (arr, key, way) {
return arr.sort(function(a, b) {
var x = a[key], y = b[key];
if (way==='123') { return ((x<y)? -1 : ((x>y)?1:0)); }
if (way==='321') { return ((x>y)? -1 : ((x<y)?1:0)); }
});
};
var sortJSON2 = function (arr, key, way) {
return arr.sort(function (a,b) {
var w=way==='123', x=a[key], y=b[key];
return x === y? 0
:w && x<y || !w && x>y?-1
:1;
/* return a[key] === b[key]? 0
:way==='123' && a[key]<b[key] || way!=='123' && a[key]>b[key]?-1
:1; */
});
};
var copyArr = function(arr) {return JSON.parse(JSON.stringify(arr)); }
var print= function (arr,comment) {
str = "[\n"+arr.map(function(item) { return JSON.stringify(item)+'\n' } ) +'];';
console.log(str,arr);
}
var A = copyArr(members),
A = sortJSON2(A, 'rank', '123');
print(A);
var B = copyArr(members),
B = sortJSON2(B, 'rank', '321');
print(B);
var C = copyArr(members),
C = sortJSON2(C, 'age', '123');
print(C);
var D = copyArr(members),
D = sortJSON2(D, 'age', '321');
print(D);
var E = copyArr(members),
E = sortJSON2(E, 'name', '123');
print(E);
var F = copyArr(members),
F = sortJSON2(F, 'name', '321');
print(F);