Страницы

Поиск по вопросам

четверг, 28 марта 2019 г.

Как определенный элемент массива вставить на первое место?

Есть лексикографически отсортированный массив объектов, получаемый из api, где есть одно из свойств - имя города(Name) Мне необходимо отсортировать, что бы сначала шел город, который мне нужен, а все остальные по алфавиту.
const result = response.data result.sort( (a, b) => { return a.Name.localeCompare(b.Name) });
Можно как-нибудь задать такой порядок сортировки, что бы сначала на первом месте был какой-то определенный город, скажем "Москва", а затем всё остальные элементы отсортировались лексикографически? Я пытался сделать что-то типо того:
if(a.Name === 'Москва') { return 1; } if (a.Name < b.Name) { return -1; } return 0;
Но это совсем не то...


Ответ

Можно так
const arr = [ {Name: 'НеМосква1'}, {Name: 'НеМосква2'}, {Name: 'Москва'}, {Name: 'НеМосква3'} ]; var result = arr.sort( (a, b) => { if(a.name == "Москва") return -1; if(b.name == "Москва") return 1; return a.Name.localeCompare(b.Name) }) console.log(result);

Комментариев нет:

Отправить комментарий