@gsdev99

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

Есть массив:

const arr = [
  { id: 1, value: 'item 1', pos: 'd' },
  { id: 2, value: 'item 2' },
  { id: 3, value: 'item 3', pos: 'd' },
  { id: 4, value: 'item 4', pos: 'd' },
  { id: 5, value: 'item 5' },
  { id: 6, value: 'item 6' },
  { id: 7, value: 'item 7' },
  { id: 8, value: 'item 8' }
];

Если у элемента есть свойство pos, надо его отправить в конец массива:

const arrM = [
  { id: 2, value: 'item 2' },
  { id: 5, value: 'item 5' },
  { id: 6, value: 'item 6' },
  { id: 7, value: 'item 7' },
  { id: 8, value: 'item 8' }
  { id: 1, value: 'item 1', pos: 'd' },
  { id: 3, value: 'item 3', pos: 'd' },
  { id: 4, value: 'item 4', pos: 'd' }
];
  • Вопрос задан
  • 103 просмотра
Решения вопроса 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Можно при помощи sort
arr.sort((a, b) => !b.pos - !a.pos)
UPD: лучше вот так
arr.sort((a, b) => ('pos' in a) - ('pos' in b))
чтобы не было проблем с значениями false, undefined, null и.т.д.
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
arr.sort((a, b) => a.pos ? 1 : (b.pos ? -1 : 0))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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