3

double の多次元配列をソートしたいと思います。

配列は次のようになります: [[1,2],[2,3],[5,6],[8,9]]

X値でソートし、x、y値をペアにしたままにします。

サイトで多次元ソートを検索したところ、ソート機能が次のように変更されている次のようなスレッドが見つかりました。

location.sort(function(a,b) {

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

});

ただし、この関数を変更して機能させる方法がわかりません。

4

3 に答える 3

5

配列の値を比較するだけです-

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

myarray.sort(function(a,b) { return a[0] - b[0]; });
于 2013-08-01T14:50:46.663 に答える
2

必要な と の部分を比較するだけaですb。数値を使用すると、それらの違いを使用できます。

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

既に提供した配列は、各配列の最初の値でソートされていることに注意してください。代わりに降順で並べ替えたい場合は、次のようにします。

location.sort(function(a, b){
    return b[0] - a[0];
});
于 2013-08-01T14:50:33.553 に答える
1

これを達成する最も安全な方法は、質問にあることを行うことですが、数字キーを使用します。

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

万が一、各子配列の最初の要素が常に 1 桁の場合:

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
于 2013-08-01T14:51:45.723 に答える