2013-08-01 96 views
3

我想排序一個multidimentional數組的雙打。sort multidimentional array javascript

陣列看起來像這樣:[[1,2],[2,3],[5,6],[8,9]]

我想由X值對它進行排序,並保持x,y值配對。

我搜索網站多維排序和發現線程像these其中排序函數進行了修改,像這樣:

location.sort(function(a,b) { 

    // assuming distance is always a valid integer 
    return parseInt(a.distance,10) - parseInt(b.distance,10); 

}); 

我不知道但是如何修改此功能爲我工作,..我能得到一點幫助嗎?謝謝!

回答

5

只是比較數組值 -

var myarray = [[1,2],[2,3],[5,6],[8,9]]; 

myarray.sort(function(a,b) { return a[0] - b[0]; }); 
+0

謝謝,我想這很明顯! – tbogatchev

2

你只需要比較你想要的部分ab。用數字你可以使用它們的區別:

location.sort(function(a, b){ 
    return a[0] - b[0]; 
}); 

請注意,您提供的數組已經按照每個數組中的第一個值排序。如果你想按降序排列,而不是你能做到這一點排序:

location.sort(function(a, b){ 
    return b[0] - a[0]; 
}); 
1

實現這一目標是做你有什麼在你的問題的最安全的方式,但用數字鍵:

location.sort(function(a,b) { return a[0]-b[0]; }) 

如果由於某些原因每個子陣列的第一個元素始終是一個單一的數字

location.sort(); 
//only works if first element in child arrays are single digit (0-9) 
//as in the example: [[1,2],[2,3],[5,6],[8,9]] 
//[[1,2],[22,3],[5,6],[8,9]] - will not work as 22 is not a single digit 
+0

也許有用作爲評論,但這個答案會混淆某人。 – Mathletics

+0

@Mathletics這是一個答案 - 如果第一個元素(x)是一個單獨的數字'location.sort()'的作品。那不是一個解決方案? – SmokeyPHP

+0

有些noob會讀取它,錯過關於單個數字的部分(默認情況下,這是一個字符串比較,這就是爲什麼會起作用),並最終提出另一個可以通過閱讀[ MDN(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)。 – Mathletics