【问题标题】:How to perform sort in js?如何在js中进行排序?
【发布时间】:2017-07-29 00:38:57
【问题描述】:

我有一个这样的数组

var temp = [{"rank":3,"name":"Xan"},{"rank":1,"name":"Man"},{"rank":2,"name":"Han"}]

我正在尝试按如下方式对其进行排序

 temp.sort(function(a){ a.rank})

但它不起作用。任何人都可以建议帮助。谢谢。

【问题讨论】:

标签: javascript angularjs arrays sorting mean


【解决方案1】:

对于Array#sort,您还需要检查第二项,以获得对称值并返回一个值。

var temp = [{ rank: 3, name: "Xan" }, { rank: 1, name: "Man" }, { rank: 2, name: "Han" }];

temp.sort(function(a, b) {
    return a.rank - b.rank;
});

console.log(temp);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

  • 嘿嘿妮娜,排序题是你最喜欢的类型吧?
  • @lin,我想更多的是数组。
  • 是的,她之前已经为我回答过这样的一对......谢谢尼娜:)
【解决方案2】:

您必须在sort 函数中比较它们。如果函数返回负值,a 在 b 之前(按升序),如果它是正值,b 在 a 之前。如果返回值为0,则它​​们相等:

temp.sort(function(a, b) {
    if (a.rank < b.rank) {
        return -1;
    } else if (a.rank > b.rank) {
        return 1;
    } else {
        return 0;
    }
});

您可以使用一种快捷方式将数字相减以获得相同的结果:

temp.sort((a, b) {
    return a.rank - b.rank;
});

降序:

temp.sort((a, b) {
    return b.rank - a.rank;
});

ES6 快捷键:

temp.sort((a, b) => b.rank - a.rank;

【讨论】:

    【解决方案3】:

    试试

     temp.sort(function(a, b) {return a.rank - b.rank});
    

    【讨论】:

      猜你喜欢
      • 2020-06-29
      • 1970-01-01
      • 2018-04-03
      • 2011-06-06
      • 2015-01-17
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多