I have the array:
var arr = [
{id: "d", sequence: 3},
{id: "c", sequence: 4},
{id: "b", sequence: 2},
{id: "a", sequence: 1},
{id: "e"}
];
and want to sort it with follow logic:
- element without
sequence
should be first - other should be sorted by descending
sequence
.
My solution is:
arr.sort(function(a, b) {
if (!a.sequence || !b.sequence) return 1;
return b.sequence - a.sequence;
});
I've expected following order:
[{id: "e"}, {id: "c", sequence: 4}, {id: "d", sequence: 3}, ...]
but in safari receive:
[
{id: "c", sequence: 4},
{id: "d", sequence: 3},
{id: "b", sequence: 2},
{id: "a", sequence: 1},
{id: "e"}
]
Why in Safari {id: "e"}
is the last element, when in Chrome and Firefox it is first?
Thanks for advance!