我有一个对象数组,我想按照以下两个规则(按优先级顺序)对它们进行排序:
"departeYet"属性为 true 的对象必须在开头 然后必须按数字顺序对对象进行排序(“数字”属性)
这样就可以了:
- 正确:005
- 正确:007
- 正确:027
- 错误:009
- 错误:020
这是我们感兴趣的对象部分的结构:
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
});
我该怎么办?谢谢。
最佳答案
您可以使用这个原始答案(我故意写得更冗长):
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;
});
关于javascript - 按 bool 值排序对象数组,然后按数字排序(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569066/