javascript - 按 bool 值排序对象数组,然后按数字排序(javascript)

标签 javascript jquery sorting

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

"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/

相关文章:

javascript - 如何让node.js和mongoDB中的for循环同步运行

javascript - 创建无缝嵌套滚动翻转

c - 如何在 C 中按日期打印目录中的文件名列表?

javascript - Thymeleaf 模板无法与内联 JS 一起使用

jquery - 如何在 "href attribute"之后添加 "</a>"

sorting - emacs 使用 sort-regexp-fields 对行进行排序

java - 理解一段代码用于不同的场景

javascript - YQL 不按文档顺序返回带有联合运算符 (a|b) 的 xpath 选择查询

javascript - 网站顶部的动画导航背景

javascript - 如何通过 JavaScript 中的属性获取对象的索引?