Есть массив:
cities = [
{city: "Артёмовск", population: 1688},
{city: "Ачинск", population: 105259},
{city: "Боготол", population: 19819},
{city: "Бородино", population: 16061},
{city: "Дивногорск", population: 29195},
{city: "Дудинка", population: 21015},
{city: "Енисейск", population: 17805},
{city: "Железногорск", population: 83857},
{city: "Заозёрный", population: 10286},
{city: "Красноярск", population: 1095286}
];
Нужно отсортировать его по алфавиту, но на первое место поставить город с наибольшим значением численности населения.
Пробую так:
function sortData(arr) {
const max = arr.reduce((prev,cur) => +cur.population > +prev.population ? cur: prev); //нахожу город с максимальным населением
const maxIndex = arr.findIndex(item => item.city === max.city); //нахожу индекс этого объекта в массиве
arr.splice(maxIndex, 1); // вырезаю его
arr = arr.sort((a, b) => a.city.toLowerCase() - b.city.toLowerCase()); // провожу сортировку по алфавиту
arr.unshift(max); // вставляю в начало город с максимальным населением
return arr;
}
Функция работает, но мне кажется, что я что-то упускаю...
Можно ли город с максимальным населением поднять вверх как-то попроще (возможно, на этапе сортировки) и обойти нахождение максимального элемента, его вырезание и вставку?