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 can avoid hardcoding by create a general function
Running
will have you
You should design your sorting function accordingly:
(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 ofa.sort2 - b.sort2
.As a sidenote, your
items
is actually a string literal, you have toJSON.parse
to get an array: