簡體   English   中英

使用javascript對二維數組進行排序

[英]Sort two dimensional array using javascript

我想用javascript對二維數組進行排序。

我的陣列:

[
  ['1','6'],
  ['1','5'],
  ['2','3'],
  ['0','4'],
]

我的排序功能:

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

// 2nd sort
myArray.sort( function(a, b) {
  return a[1] - b[1];
});

結果 :

["2", "3"]
["0", "4"]
["1", "6"]
["1", "5"]

結果應該是:

["0", "4"]
["1", "5"] // 5 before 6 and the left column is sorted
["1", "6"]
["2", "3"]

第二種排序是覆蓋第一次排序完成的排序 ,它只保留第二列的排序。

您不需要兩個sort函數,只需將它們包含在一個排序中

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

或沒有大括號

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

演示

 var myArray = [ ['1','6'], ['1','5'], ['2','3'], ['12','13'], ['0','4'], ]; myArray.sort(function(a, b) { return (a[0] - b[0]) || (a[1] - b[1]); }); console.log(myArray); 

您可以對任意長度的數組使用不同的方法。

該解決方案假設所有內部陣列具有相同的長度。

 var array = [['1','6', '1'], ['1','5', '1'], ['1','5', '2'], ['2','3', '0'], ['0','4', '0']]; array.sort(function (a, b) { var d; a.some((v, i) => d = v - b[i]); return d; }); console.log(array.map(a => a.join(' '))); 

 myArray.sort((a, b) => (a[0] - b[0]) || (a[1] - b[1]));

如果第一個插槽相等,則在第二個插槽后排序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM