@kolaluka

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

[{time: '09:00:00'}, {time: '12:30:00'}, {time: '13:30:00'}, {time: '10:00:00'}, {time: '12:00:00'}]


Как этот отсортировать так массив, чтобы на выходе получился тот, что ниже?

[{time: '09:00:00'}, {time: '10:00:00'}, {time: '12:00:00'}, {time: '12:30:00'}, {time: '13:30:00'}]


так не получается
sort((a, b) => b.time - a.time);
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Значения time не числа, чтобы вычитать b.time - a.time, а строки.

Время в таком формате можно сравнивать как строки: больше-меньше — лексикографический порядок сохраняет смысл.
arr.sort((a, b) => a.time > b.time ? 1 : (a.time == b.time ? 0 : -1))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Nolis
@Nolis
it-гопник
Если есть возможность прописать ручками - просто добавь sort в каждом объекте по типу:
[{time: '09:00:00', sort: 1}, {time: '10:00:00', sort: 2}],
Если возможности нет, то нужно переводить время в секунды и сравнивать от начала суток.
https://developer.mozilla.org/en-US/docs/Web/JavaS...

p.s. sort по сути работать должен, но не так явно
Ответ написан
Ваш ответ на вопрос

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

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