web-dev-qa-db-ja.com

JavaScript:多次元配列の並べ替え

このような多次元配列を作成した後、どのように並べ替えればよいですか?

「マーカー」がすでに定義されていると仮定します:

var location = [];
for (var i = 0; i < markers.length; i++) {
  location[i] = {};
  location[i]["distance"] = "5";
  location[i]["name"] = "foo";
  location[i]["detail"] = "something";
}

上記の例では、「距離」で並べ替える必要があります。配列と多次元配列のソートに関する他の質問を見たことがありますが、これでうまくいくようには見えません。

28
Jeff
location.sort(function(a,b) {

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

});

javaScriptのarray.sortメソッドにはオプションのパラメーターがあり、これはカスタム比較の関数リファレンスです。戻り値は>0は、最初にbを意味し、0は、abが等しいことを意味し、<0は、最初にaを意味します。

45
lincolnk

これを試しましたか?

location.sort(function(a,b) {
    return a.distance - b.distance;
});
10
user113716

これまでに投稿された両方のソート関数は機能するはずですが、locationを変数として使用すると、すでにシステムで定義されています。

1
Gus