@yakov_l

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

Есть массив объектов, если свойство status имеет значение "выполнено" - надо поместить такой элемент в конец массива.
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
items.sort((a, b) => a.status === 'выполнено' ? 1 : b.status === 'выполнено' ? -1 : 0)

или

items.reduceRight((_, n, i, a) => (n.status === 'выполнено' && a.push(a.splice(i, 1)[0]), a), 0)

UPD. Если вместо изменения исходного массива нужно создать новый, то можно так:

items.reduce((acc, n) => (acc[+(n.status === 'выполнено')].push(n), acc), [ [], [] ]).flat()

или

items.reduce((acc, n) => (acc[n.status === 'выполнено' ? 'push' : 'unshift'](n), acc), [])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы