@xster

Как отсортировать массив, если часть значений — undefined?

Как сделать сортировку массива объектов по значению даты?
Дата - обычное число в секундах.
Проблема в том, что не в каждом объекте это значение даты есть, в результате сортировка не происходит.
Мне нужно, чтобы объекты в которых есть это значение даты, находились в начале массива, а тогда бы уже эти объекты сортировался по дате между собой.
То есть, сейчас застрял на этом - если в объекте данное значении не undefined, ставить его на начало.
  • Вопрос задан
  • 279 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
arr.sort((a, b) => !a.date ? 1 : !b.date ? -1 : a.date - b.date)

или

arr.sort((a, b) => (a.date || Infinity) - (b.date || Infinity))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
loktionov129
@loktionov129
Backend .NET Developer
const items = [
  {id: 1},
  {id: 2, date: 13456},
  {id: 3},
  {id: 4, date: 29996},
  {id: 5},
  {id: 6, date: 73456},
  {id: 7, date: 10000},
  {id: 8, date: 1000}
];

console.warn(items);
const sortedItems = [...items].sort((a, b) => (!a.date) || (b.date && a.date > b.date));
console.warn(sortedItems);


5a085720c964f510477259.png
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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