我有一个数组,我需要根据特定点的距离对其数据进行排序。我知道.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",
"Point": "26.1539253, 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的工作示例。