Сортировка объекта по длине лат сверху вниз справа налево - PullRequest
0 голосов
/ 25 марта 2020

У меня есть объект, который выглядит примерно так:

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
  }
  ...
}

Представляя, что эти координаты относятся к красным штифтам на карте ниже, я хотел бы начать с самого верхнего левого угла от каждого штифта и сортировать их, как будто квадрат медленно расширяется с этой точки. Я могу думать только о том, чтобы получить начальный lat long и увеличить его до +1, а затем проверить, является ли значение <любой переменной, повторить. Я полагаю, что это невероятно неэффективно и хотелось бы более надежного и расширяемого способа. </p>

Спасибо

enter image description here

1 Ответ

3 голосов
/ 25 марта 2020

Вы хотите отсортировать ваш массив по максимальному значению ваших 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;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...