Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript多维数组按数字顺序排序_Javascript_Multidimensional Array_Sorting - Fatal编程技术网

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

Javascript多维数组按数字顺序排序,javascript,multidimensional-array,sorting,Javascript,Multidimensional Array,Sorting,我有一个二维数组,我需要对它进行数字排序。以下是该阵列的一个示例: [0] [1] 3 320 55B 250 26 100 55A 260 56 310 89 420 我需要按[0]值进行数字排序。这些值存储为字符串。我已经知道了如何按字母和数字顺序排列数组,但由于偶尔会出现A和B,我无法知道如何对数组排序。parseInt方法将忽略数字后面的任何字符串,删除A和B arr.sort(functio

我有一个二维数组,我需要对它进行数字排序。以下是该阵列的一个示例:

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

我需要按[0]值进行数字排序。这些值存储为字符串。我已经知道了如何按字母和数字顺序排列数组,但由于偶尔会出现A和B,我无法知道如何对数组排序。

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;
});
arr.sort(函数(rowA,rowB){
var a=parseInt(rowA[0],10);
var b=parseInt(rowB[0],10);
如果(a>b)
返回1;
否则如果(a
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;
});
arr.sort(函数(rowA,rowB){
var a=parseInt(rowA[0],10);
var b=parseInt(rowB[0],10);
如果(a>b)
返回1;
否则如果(a
仅供注意-如果这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;
  }
}); 
arr.sort(函数(l,r){
var vl=l[0]。拆分(/(\d+)(\d*)/),
vr=r[0]。拆分(/(\d+)(\d*)/);
vl[1]=parseInt(vl[1]);
vr[1]=parseInt(vr[1]);
if(vl[1]
仅供注意-如果这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;
  }
}); 
arr.sort(函数(l,r){
var vl=l[0]。拆分(/(\d+)(\d*)/),
vr=r[0]。拆分(/(\d+)(\d*)/);
vl[1]=parseInt(vl[1]);
vr[1]=parseInt(vr[1]);
if(vl[1]
我是否理解正确,数组是这样的:[[3,320],“55B”,250],26,100]]而不是[[3,55B,26],[320,250,100]]。您可以更具体地描述一下您希望如何对值进行排序吗?现在这一切似乎都有点武断。制约因素是什么?换句话说,字母是否总是出现在左边第三个位置?像这样的东西。可能是重复的。据我所知,他知道如何排序,但他不知道如何用结尾的“A”和“B”对数字进行排序…@AdamJurczyk基本上就是这样…我理解对了吗,数组是这样的:[[3320],“55B”,250],26100],而不是[[3,“55B”,26],[320250100]]?您能否更具体地描述一下您希望如何对值进行排序?现在这一切似乎都有点武断。制约因素是什么?换句话说,字母是否总是出现在左边第三个位置?像这样的东西。可能是重复的。据我所知,他知道如何排序,但他不知道如何用结尾的“A”和“B”对数字排序…@AdamJurczyk基本上就是这样…
arr.sort(函数(A,B){return parseInt(A[0],10)-parseInt(B[0],10);})
arr.sort(函数(a,b){返回parseInt(a[0],10)-parseInt(b[0],10);})