我有一個二維數組,我需要進行數值排序。下面是陣列的一個示例:Javascript multidimentional array按數字順序排序
[0] [1]
3 320
55B 250
26 100
55A 260
56 310
89 420
我需要按[0]值進行數值排序。這些值存儲爲字符串。我已經想出瞭如何按字母順序和數字排列數組,但我無法弄清楚如何訂購這個數組,因爲偶爾會有A和B.
我有一個二維數組,我需要進行數值排序。下面是陣列的一個示例:Javascript multidimentional array按數字順序排序
[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(function(a,b){return parseInt (a [0],10) - parseInt(b [0],10);});' – ErikE
只是爲了說明 - 如果這一個和乙無關與排序,比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;
}
});
做我的理解是正確的,該陣列是這樣的:[[3,320],[「55B」 ,250],26,100]而不是[[3,「55B」,26],[320,250,100]]? – Yogu
你可能會更具體地描述你想如何排序值?這一切似乎都有點武斷了。有什麼限制?換句話說,字母總是會出現在左起第三個位置?像這樣的東西。 –
[按第二個值對二維數組排序]的可能重複(http://stackoverflow.com/questions/3524827/sort-a-2d-array-by-the-second-value) – epascarello