Сортировать строку в массиве - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть следующий массив возрастных групп:

["35 - 44", "18 - 34", "55+", "45 - 54"]

Я хочу отсортировать его так, чтобы у меня было:

["18 - 34", "35 - 44", "45 - 54", "55+"]

То, что у меня пока есть:

arr.map(item => parseInt(item, 10)).sort((a, b) => a - b)

Что дает мне:

[18, 25, 35, 65]

Но я не знаю, что теперь с ним делать.

Спасибо за помощь.

1 Ответ

0 голосов
/ 22 ноября 2018

Не map через parseInt, в противном случае не-числа после начала строки будут удалены.Просто отсортируйте простой массив строк с помощью localeCompare:

console.log(
  ["35 - 44", "18 - 34", "55+", "45 - 54"].sort((a, b) => a.localeCompare(b))
);

Чтобы быть немного более гибким, если существуют и однозначные диапазоны, также используйте параметр numeric: true:

console.log(
  ["35 - 44", "1-2", "3-4", "18 - 34", "55+", "45 - 54"]
    .sort((a, b) => a.localeCompare(b, undefined, {numeric: true}))
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...