@kolaluka

Как отсортировать объекты в массиве?

Есть массив вида

[
{id: 1, title: "Другое"},
{id: 2, title: 'Товары'},
{id: 2, title: 'Услуги'}
]


Как сделать так, чтобы объект с title "Другое" был в конце списка?
  • Вопрос задан
  • 111 просмотров
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Отсортирует по алфавиту по полю (по полюшку) title, с особым случаем: «Другое» – в конец:
arr.sort((a, b) => {
  const keyword = 'Другое';
  if (a.title === b.title) return 0;
  if (a.title === keyword) return 1;
  if (b.title === keyword) return -1;
  return a.title > b.title ? 1 : -1;
})

тест
const arr = [
  {id: 1, title: "Другое"},
  {id: 2, title: 'Товары'},
  {id: 2, title: 'Услуги'},
  {id: 3, title: 'Услуги'},
  {id: 4, title: 'Товары'},
  {id: 5, title: 'Анекдоты'},
  {id: 6, title: 'Тамада, тосты, сверлю бетон'},
];

// ​[
//   { id: 5, title: "Анекдоты" }
//   { id: 6, title: "Тамада, тосты, сверлю бетон" }
//   { id: 2, title: "Товары" }
//   { id: 4, title: "Товары" }
//   { id: 2, title: "Услуги" }
//   { id: 3, title: "Услуги" }
//   { id: 1, title: "Другое" }
// ​]
Ответ написан
Комментировать
MrDecoy
@MrDecoy Куратор тега JavaScript
Верставший фронтендер
В Вашем случае можете сортировать по id, но Вы указали что у двух элементов он одинаков, а это может мешать сортировке - давать не тот результат, которого ожидаешь, если это не опечатка.
А можете по коду символа первой буквы:
[
  {id: 1, title: "Другое"},
  {id: 2, title: 'Товары'},
  {id: 2, title: 'Услуги'}
].sort((a, b) => b.title.charCodeAt(0) - a.title.charCodeAt(0))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Nelson9052
@Nelson9052
[
{id: 1, title: "Другое"},
{id: 2, title: 'Товары'},
{id: 2, title: 'Услуги'}
].sort((a, b) => b.title.charCodeAt(0) - a.title.charCodeAt(0))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы