2016-11-09 8 views
0

配列をソートした後、贈与IDを返すにはどうしたらいいですか?配列のソート後にIDを取得しますか?

var distance = [];

IループJSONファイルを通ってIDとアレイ距離に対する応答(応答は、現在のユーザの位置と格納位置との間distaceある)を追加:distance[item.properties.Nid] = response;を。

各アレイに新しい距離を追加した後、私は再び配列をソート:

sort_stores = function(stores){ 
    stores = stores.filter(function(item){ 
     return item !== undefined; 
    }); 

    stores.sort(function(a, b){ 
     return a - b; 
    }); 

    console.log(stores); 
}; 

をしかし、どのように私は私のID distance[item.properties.Nid]バックを得ることができますか? storesを自分のコンソールに記録すると、応答のみがログに記録されます。

答えて

1

データがIDと距離の両方を1つのオブジェクトに持つように、データを別々に整理します。

ので、店舗を次のように

distance.push({ Nid: item.properties.Nid, distance: response }); 

そして、この関数で並べ替える:

sort_stores = function(stores){ 
    // NB: first step (filter out undefined) is not needed anymore 
    stores.sort(function(a, b){ 
     return a.distance - b.distance; // add distance property 
    }); 

    console.log(stores); 
}; 

あなたはこのようなことを行うことができ、距離を取得するには:

firstDistance = stores[0].distance; 

またはループを:

for (var store of stores) { 
    console.log('Store ', store.Nid, ' is at ', store.distance) 
} 
+0

ありがとう、それは動作します!しかし、簡単な質問ですが、どうすれば今だけ距離を記録できますか?オブジェクト全体の代わりに 'console.log(stores.distance)'でそれを行うことはできますか? –

+1

あなたは大歓迎です。はい、実際には、そのような距離を得るでしょうが、あなたは '' [5] .distance'を指定する必要があります。また、* sort *コールバック関数での処理も同様です。 – trincot

+1

私はいくつかの例を追加しました。 – trincot

関連する問題