问题描述
我有一个数组,我需要按特定点的距离对它的数据进行排序。
知道.sort()
自从我处理坐标以来就行不通了,所以我一直在使用一个名为Geolib的库,该库具有一个名为getPreciseLocation()
的函数,正是我所需要的,但是并没有似乎在遍历数组时起作用。
这是包含我将要使用的数据的数组。
数据:
[
{
"id": "1","Point": "27.1597268,40.6646601"
},{
"id": "2","Point": "11.1640393,49.648713"
},{
"id": "3","Point": "26.1539253,42.6599287"
},{
"id": "4","Point": "21.1597268,44.6646601"
},{
"id": "5","Point": "10.1640393,43.648713"
},{
"id": "6",61.6599287"
}
]
我一直试图用来遍历数组的代码。
let distancesFromUserLocation = [];
this.state.Data.forEach(item => {
distancesFromUserLocation.push(geolib.getPrecisedistance({latitude: 30.1891168,longitude: 11.6226982},item.Point))
})
免责声明:我只需要获取每个数组对象到新数组的距离即可。 我已经尝试并研究了许多事情,并且找到了解决方案,但是仅仅以为我正在寻求解决方案,就会出问题。
解决方法
您需要推每次迭代到DistancesFromUserLocation
数组的生成距离。
let DistancesFromUserLocation = [];
this.state.Data.forEach(item => {
// push each distance to `DistancesFromUserLocation`
DistancesFromUserLocation.push(
geolib.getPreciseDistance(
{latitude: 30.1891168,longitude: 11.6226982},item.Point
);
)
})
然后您才能使用Array.sort()
。
console.log(DistancesFromUserLocation.sort());
编辑: 在codesandbox处查看我的工作示例。