2017-06-24 18 views
0

は私が怒鳴るJSONを持っている:2列に基づいてJSONをソートする方法は?

[ 
    {"trip_id":2, "lat":100, "lon":200, "location_seq":0}, 
    {"trip_id":2, "lat":200, "lon":400, "location_seq":1}, 
    {"trip_id":3, "lat":300, "lon":300, "location_seq":1}, 
    {"trip_id":3, "lat":400, "lon":400, "location_seq":0} 
] 

と「location_seq」昇順で最初の「trip_id」列の昇順にし、それを並べ替えしようとしています。 SQLでは、クエリの最後に:

order by trip_id, location_seq 

JavaScriptを使用してJSON内で同じことを達成する方法はありますか? Goalはtrip_idとlocation_seqでソートされているので、データの上にトラフを繰り返すことです(JSONを最後にする必要はありません - 正しいシーケンスを持つだけです)。

ありがとうございました。

+0

ご確認ください。あなたのサンプル配列の正しい順序は0,1,3,2でしょうか? –

+0

location_seqには2つの可能性(0と1)しかありません。つまり、0はStart、1はEndです。 – Joe

答えて

1
var trips = [ 
    {"trip_id":2, "lat":100, "lon":200, "location_seq":0}, 
    {"trip_id":2, "lat":200, "lon":400, "location_seq":1}, 
    {"trip_id":3, "lat":300, "lon":300, "location_seq":1}, 
    {"trip_id":3, "lat":400, "lon":400, "location_seq":0} 
]; 

trips.sort(function(a, b) { 
    if(a.trip_id !== b.trip_id) 
    return a.trip_id - b.trip_id; 
    return a.location_seq - b.location_seq; 
}); 
1

以下のコードを使用できます。それがあなたを助けることを願っています。

var obj = [ 
{"trip_id":2, "lat":100, "lon":200, "location_seq":0}, 
{"trip_id":2, "lat":200, "lon":400, "location_seq":1}, 
{"trip_id":3, "lat":300, "lon":300, "location_seq":1}, 
{"trip_id":3, "lat":400, "lon":400, "location_seq":0} 
] 

obj.sort(function(a, b) { 
    return a["trip_id"] - b["trip_id"] || a["location_seq"] - b["location_seq"]; 
}); 
関連する問題