Изменить порядок Javascript объекта, содержащего специальный символ - PullRequest
0 голосов
/ 10 июля 2020

Я переупорядочиваю javascript Объект:

temp = [
  {one: 169, two: "0,1 - 6 m", three: "2", four: 12433},
  {one: 169, two: "> 9 m", three: "2", four: 12435},
  {one: 169, two: "0 - 0,1 m", three: "2", four: 12432},
  {one: 169, two: "6,1 - 9 m", three: "2", four: 12434}
];

Я хочу отобразить два в упорядоченном раскрывающемся списке. Я использую эту строку для правильного заказа:

temp = temp.sort(
  function(a, b) {
    return parseInt(a.two.split(" - ")[0]) - parseInt(b.two.split(" - ")[0]);
  }
);

, но у меня все еще есть проблема со специальными символами '>' и '<'. </p>

Как я могу заменить эти строки на ' <'или'> 'в конце моего объекта JS?

Спасибо

1 Ответ

0 голосов
/ 10 июля 2020

Вы можете просто разделить строки и нормализовать их, чтобы получить число.

Если значения равны start и end, возьмите либо 1, либо -1. В противном случае отсортируйте по первому значению.

const
    normalize = s => +s.match(/\d+(\,\d*)?/)[0].replace(',', '.'),
    temp = [{ one: 169, two: "0,1 - 6 m", three: "2", four: 12433 }, { one: 169, two: "> 9 m", three: "2", four: 12435 }, { one: 169, two: "0 - 0,1 m", three: "2", four: 12432 }, { one: 169, two: "6,1 - 9 m", three: "2", four: 12434 }];

temp.sort((a, b) => {
    const
        aa = a.two.split(' - ').map(normalize),
        bb = b.two.split(' - ').map(normalize);

    if (aa[0] === bb[1]) return 1;
    if (aa[1] === bb[0]) return -1;
    return aa[0] - bb[0]
});

console.log(temp);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...