我有一个对象数组,我想按照这两个规则(按优先级顺序)对它们进行排序:
" departeYet"属性是真的必须在开头 然后必须按数字顺序对对象进行排序("数字"属性)
这没关系:
这是我们感兴趣的部分对象的结构:
var notSortedData = {
number: number, // it's a string
departedYet: scheduled_date, // true or false
}
sortedTrains.push(notSortedData);
因此,notSortedData通过for循环在sortedTrains中推送。
然后,我需要对它进行排序:
sortedTrains.sort(function(a, b) {
// sorting algorithm here
});
我该怎么办?感谢。
答案 0 :(得分:7)
你可以使用这个原始答案(我故意更详细):
sortedTrains.sort(function(a, b) {
if(a.departedYet === b.departedYet)
return a.number-b.number;
else if(a.departedYet)
return -1;
else return 1;
});
......或者更短的等价物:
sortedTrains.sort(function(a, b) {
if(a.departedYet === b.departedYet)
return a.number-b.number;
return a.departedYet ? -1 : 1;
});