【问题标题】:How can i sort a multi-dimensional array by Number如何按数字对多维数组进行排序
【发布时间】:2014-02-03 18:49:17
【问题描述】:

我想按 Id 对数组进行排序

var arr = [{"name":"a", "id":"2"}, {"name":"r", "id":"11"}, {"name":"y", "id":"23"}, {"name":"e", "id":"1"}];

我正在使用以下代码

function compareNum(a,b) {
          if (a.id < b.id)
          {
              return -1;
          }
          if (a.id > b.id)
          {
              return 1;
          }

          return 0;
}

答案排序:1、11、2、23

但我需要:1,2,11,23

【问题讨论】:

标签: jquery arrays sorting


【解决方案1】:

您可以使用 predefined sort() JavaScript 函数:

arr = arr.sort(function(current, next){
    return current.id - next.id;
});

在这里查看在线演示:http://jsfiddle.net/5J8kk/3/


来源:https://stackoverflow.com/a/13171179/1505348

【讨论】:

  • 很好的解决方案,谢谢,
【解决方案2】:

您需要使用parseInt() 将每个id 从字符串转换为整数。

【讨论】:

    【解决方案3】:

    只需添加一些 parseInt() 即可:

    function compareNum(a, b) {
        if (parseInt(a.id) < parseInt(b.id)) {
            return -1;
        }
        if (parseInt(a.id) > parseInt(b.id)) {
            return 1;
        }
        return 0;
    }
    

    Demo

    --

    但实际上简化版本也可以:

    arr.sort(function(a,b) {
        return a.id - b.id;
    });
    

    Demo

    【讨论】:

      猜你喜欢
      • 2014-05-13
      • 2021-07-11
      • 2013-12-09
      • 2011-03-17
      • 1970-01-01
      相关资源
      最近更新 更多