javascript - Modifying the following sort function so it returns numbers -
the following function following:
1) if isdefault === true
, isdefault === false
, former goes first.
2) if isdefault === true
, isdefault === true
, sort updatedat
in descending fashion.
3) if isdefault === false
, isdefault === false
, sort name
in ascending fashion.
function sortpanoramas (panoramas) { panoramas.sort((a, b) => { if (a.isdefault !== b.isdefault) return a.isdefault < b.isdefault if (a.isdefault && b.isdefault) return a.updatedat < b.updatedat if (!a.isdefault && !b.isdefault) return a.name > b.name }) }
this works in chrome not in safari, because told you're supposed return numbers in sort
functions.
how modify function return numbers?
edit: sample data:
[ { "id": "cbu2z5bz9w", "name": "a01", "updatedat": "2016-08-24t06:20:47.972z", "isdefault": true, "index": 0 }, { "id": "rdt5cvglrg", "name": "a02", "updatedat": "2016-08-24t06:21:22.126z", "isdefault": false, "index": 1 }, { "id": "ehyt1tycbn", "name": "a03", "updatedat": "2016-08-24t06:21:47.404z", "isdefault": false, "index": 2 }, { "id": "jutmyn2tdr", "name": "a04", "updatedat": "2016-08-24t06:26:29.591z", "isdefault": false, "index": 3 }, { "id": "vgxxncbmch", "name": "a05", "updatedat": "2016-08-24t06:27:12.934z", "isdefault": false, "index": 4 } ]
i think need:
function sortpanoramas(panoramas) { panoramas.sort((a, b) => { if (a.isdefault !== b.isdefault) { return a.isdefault ? -1 : 1; } if (a.isdefault && b.isdefault) { return a.updatedat > b.updatedat ? -1 : a.updatedat < b.updatedat ? 1 : 0; } return a.name < b.name ? -1 : a.name > b.name ? 1 : 0; }); }
Comments
Post a Comment