我有一个看起来像这样的对象:
Object {
"-M2p5oNuWAJFhZKv64ht": Object {
"latitude": -37.8263853,
"longitude": 144.9951198
},
"-M39Q4SBJbGZjUQHfvGa": Object {
"latitude": -37.805684,
"longitude": 144.893994
},
"-M39Q4pAz5sF0tF4d3XK": Object {
"latitude": -37.8086484,
"longitude": 144.8823838
},
"-M39Q4zL7ZNzqdHaJLvZ": Object {
"latitude": -37.8076142,
"longitude": 144.8838452
},
"-M39Q58FwvBP2HoDZGD9": Object {
"latitude": -37.808319,
"longitude": 144.892747
},
"-M39Q5Idu-EgkAn0Vd2Q": Object {
"latitude": -37.8108465,
"longitude": 144.8798158
},
"-M39Q5U8XCq1h4ieo_Db": Object {
"latitude": -37.802019,
"longitude": 144.8909805
}
...
}
想象这些坐标与下面 map 上的红色图钉相关,我想从每个图钉的最左上角开始,对它们进行排序,就好像一个正方形从该点慢慢扩展一样。我只能想到获取起始 lat long 并将这些值递增 +1,然后检查值是否 < 任一变量,重复。我想这显然是非常低效的,并且希望有一种更强大和可扩展的方式。
谢谢
最佳答案
您想按 2 个坐标的最大值对数组进行排序。
myArray.sort((a, b) => {
const aMax = Math.max(a.latitude, a.longitude);
const bMax = Math.max(b.latitude, b.longitude);
if (aMax < bMax) return -1;
if (bMax < aMax) return 1;
return 0;
});
关于javascript - 从左上到右下对经纬度对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60841309/