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);})代码>