通过布尔值排序对象数组,然后按数字排序(javascript)

时间:2014-10-26 01:54:47

标签: javascript jquery sorting

我有一个对象数组,我想按照这两个规则(按优先级顺序)对它们进行排序:

" departeYet"属性是真的必须在开头 然后必须按数字顺序对对象进行排序("数字"属性)

这没关系:

  • true:005
  • true:007
  • true:027
  • false:009
  • false: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
    });

我该怎么办?感谢。

1 个答案:

答案 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;
});