How can I implement a
 ORDER BY sort1 DESC, sort2 DESC   logic in an JSON array like such:
    var items = '[           {             "sort1": 1,             "sort2": 3,             "name" : "a",           },           {             "sort1": 1,             "sort2": 2,             "name" : "b",           },           {             "sort1": 2,             "sort2": 1,             "name" : "c",           }     ]';   resulting in the new order :
b,a,c 
                You should design your sorting function accordingly:
items.sort(function(a, b) {   return a.sort1 - b.sort1  ||  a.sort2 - b.sort2; });   (because || operator has lower precedence than - one, it's not necessary to use parenthesis here).
The logic is simple: if a.sort1 - b.sort1 expression evaluates to 0 (so these properties are equal), it will proceed with evaluating || expression - and return the result of a.sort2 - b.sort2.
As a sidenote, your items is actually a string literal, you have to JSON.parse to get an array:
const itemsStr = `[{      "sort1": 1,      "sort2": 3,      "name": "a"    },    {      "sort1": 1,      "sort2": 2,      "name": "b"    },    {      "sort1": 2,      "sort2": 1,      "name": "c"    }  ]`;  const items = JSON.parse(itemsStr);  items.sort((a, b) => a.sort1 - b.sort1 || a.sort2 - b.sort2);  console.log(items);  If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With