2016-11-09 59 views
0

在排序数组后,我怎样才能让我的ID返回?通过JSON文件数组排序后取回ID?

var distance = [];

我环并添加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和距离。

所以,专卖店如下:

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

不客气。是的,你会得到这样的距离,但是你需要指定:'stores [5] .distance'。它也是如何在* sort *回调函数中完成的。 – trincot

+1

我加了一些例子。 – trincot