このような多次元配列を作成した後、どのように並べ替えればよいですか?
「マーカー」がすでに定義されていると仮定します:
var location = [];
for (var i = 0; i < markers.length; i++) {
location[i] = {};
location[i]["distance"] = "5";
location[i]["name"] = "foo";
location[i]["detail"] = "something";
}
上記の例では、「距離」で並べ替える必要があります。配列と多次元配列のソートに関する他の質問を見たことがありますが、これでうまくいくようには見えません。
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
は、a
とb
が等しいことを意味し、<0
は、最初にa
を意味します。
これを試しましたか?
location.sort(function(a,b) {
return a.distance - b.distance;
});
これまでに投稿された両方のソート関数は機能するはずですが、location
を変数として使用すると、すでにシステムで定義されています。