@aliaksandr-go

Как отсортировать массив по нескольким значениям?

Добрый день, подскажите пожалуйста, как сделать сортировку по нескольких значений?
Первое работает: arrray.sort((a, b) => a.status_sitter - b.status_sitter)
А внутри их ещё есть потом по дате (status_date)
Примерно так выглядит:
if (MatchingFind.status_sitter === 'yes') {
   Babysitters[a].status_sitter = 1;
   Babysitters[a].status_date = MatchingFind.date;
}

if (MatchingFind.status_sitter === 'no') {
   Babysitters[a].status_sitter = 3;
   Babysitters[a].status_date = MatchingFind.date; //2023-10-26 11:32:44 format date
}

Вот хочу 2 сорт был по дате status_date . Первый прекрасно работает. Может подсказать, как сделать сначала по статусу, а потом по дате внутри статуса??
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
// Сначала, как обычно сортируем по статусу
if (a.status > b.status) return 1;
if (a.status < b.status) return -1;
// Потом, если статусы равны, - по дате
if (a.date > b.date) return 1;
if (a.date < b.date) return -1;
return 0;


В итоге может выглядеть так:

arr.sort((a,b) => {
  if (a.status === b.status) {
    if (a.date === b.date) return 0;
    return a.date > b.date ? 1 : -1;
  }
  return a.status > b.status ? 1 : -1;
})
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если даты записаны строками, то так:
array.sort(
  (a, b) => (
    a.status_sitter != b.status_sitter 
      ? a.status_sitter - b.status_sitter
      : a.status_date.localeCompare(b.status_date)
  ),
);
Ответ написан
Ваш ответ на вопрос

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

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