javascript - 从左上到右下对经纬度对象进行排序

标签 javascript algorithm sorting

我有一个看起来像这样的对象:

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,然后检查值是否 < 任一变量,重复。我想这显然是非常低效的,并且希望有一种更强大和可扩展的方式。

谢谢

enter image description here

最佳答案

您想按 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/

相关文章:

sorting - 多个 solr 服务器实例上的 solr.RandomSortField

javascript - React.js : How to render separated jsx modules from one app. jsx 文件?

javascript - 使用正则表达式在 JavaScript 中查找最长的重复子字符串

javascript - 如何更改 Reactive Array 中的值并重新运行 helper

c++ - 找到数组中元素总和最大的子序列

python - 用于算术运算的 BFS

python - 如何在 python 中修复这个快速排序分区? (处理 Numpy 数组)

javascript - 无法读取 null 的属性 'classList'

algorithm - "without using extra memory"和 "use constant memory"之间的区别

algorithm - 订购广告/优惠以增加收入(置信度算法?)