2017-03-06 106 views
0

根据值排序数组的最有效方法是什么?我有变量user_location_latuser_location_long与阵列store_locations基于值对数组排序

我的变量用户位置具有(例如)该值:纬度45.222123123 /长54.5589858数组是这样的:

id: 4, lat: 43.22243243, longi: 52,342234 
id: 5, lat: 45.22243243, longi: 65,432432 
id: 8, lat: 77.22243243, longi: 77,555324 

etc. 

我知道我可以排序基于阵列内的值的数组。但不是我如何根据数组外的值对它们进行排序。如何从user_location找到数组中最接近的值?

编辑:是否有可能得到基于拉特和长的最近位置?看到我上面的编辑。

+0

您可以通过对象的阵列需要第一环路和计算距离到'user_location'并将其添加为所述对象的属性。然后'按该属性排序()'数组 –

+0

如何存储与数组中的值相关的id? –

回答

1

var latArray = [43.22243243, 45.22243243, 77.22243243] 
 
var myLat = 45.222123123; 
 

 
var closest = latArray.reduce(function (prev, curr) { 
 
    return (Math.abs(curr - myLat) < Math.abs(prev - myLat) ? curr : prev); 
 
}); 
 

 
console.log(closest);

源:get closest number out of array

+0

谢谢,但我在代码中犯了一个错误。我需要最近的经纬度(见我的文章),这是可能的吗?我认为在这种情况下拉特就足够了,但事实并非如此,对不起! – Appel

+1

也许看看这个:http://stackoverflow.com/questions/17594401/find-closest-city-to-given-longitude-latitude – Brad

+0

谢谢,它现在的作品! – Appel