Есть лексикографически отсортированный массив объектов, получаемый из 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);
Комментариев нет:
Отправить комментарий