按数字顺序排序的Javascript多维数组

时间:2011-11-09 19:27:20

标签: javascript multidimensional-array sorting

我有一个二维数组,我需要用数字排序。以下是数组的示例:

   [0]    [1]
    3     320
    55B   250
    26    100
    55A   260
    56    310
    89    420

我需要通过[0]值以数字顺序排序。值存储为字符串。我已经想过如何按字母顺序和数字排序数组,但由于偶尔的A和B,我无法弄清楚如何订购这个数组。

2 个答案:

答案 0 :(得分:4)

parseInt方法将忽略数字后面的任何字符串字符,删除A和B。

arr.sort(function(rowA, rowB){
    var a = parseInt(rowA[0], 10);
    var b = parseInt(rowB[0], 10);

    if (a > b)
        return 1;
    else if (a < b)
        return -1;
    return 0;
});

答案 1 :(得分:0)

仅供注意 - 如果此 A B 与排序无关,则与Zack发布的parseInt一起使用。

但如果它应该用于排序,你可以使用这样的东西:

arr.sort(function(l,r){
  var vl = l[0].split(/(\d+)(\D*)/),
      vr = r[0].split(/(\d+)(\D*)/);

  vl[1] = parseInt(vl[1]);
  vr[1] = parseInt(vr[1]);

  if(vl[1] < vr[1]){
    return -1;
  }else if(vl[1] === vr[1]){
      if(vl[2] < vr[2]) return -1;
      else if(vl[2] === vr[2]) return 0;
      else return 1;
  }else{
      return 1;
  }
});