我有一个二维数组,我需要用数字排序。以下是数组的示例:
[0] [1]
3 320
55B 250
26 100
55A 260
56 310
89 420
我需要通过[0]值以数字顺序排序。值存储为字符串。我已经想过如何按字母顺序和数字排序数组,但由于偶尔的A和B,我无法弄清楚如何订购这个数组。
答案 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;
}
});