如何按Number对多维数组进行排序

时间:2014-02-03 18:49:17

标签: jquery arrays sorting

我想按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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

只需添加一些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

答案 2 :(得分:1)

您可以使用预定义 sort() JavaScript函数:

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

在线观看演示:http://jsfiddle.net/5J8kk/3/


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