Чтобы отсортировать массив объектов по нескольким критериям в JavaScript, вы можете использовать функцию `.sort()` с функцией сравнения, которая учитывает несколько полей объектов. Вот пример такой функции для сортировки массива сначала по `status_sitter`, а затем по `status_date`:
```javascript
const arrayOfObjects = [
{ status_sitter: 'active', status_date: '2021-04-22' },
{ status_sitter: 'inactive', status_date: '2021-05-01' },
{ status_sitter: 'active', status_date: '2021-04-20' },
{ status_sitter: 'inactive', status_date: '2021-05-05' },
// ... другие объекты
];
// Сортировка по полю status_sitter и затем по полю status_date
arrayOfObjects.sort((a, b) => {
// Сравнение по status_sitter
if (a.status_sitter < b.status_sitter) {
return -1;
}
if (a.status_sitter > b.status_sitter) {
return 1;
}
// Если status_sitter одинаковый, то сравниваем по status_date
if (a.status_date < b.status_date) {
return -1;
}
if (a.status_date > b.status_date) {
return 1;
}
// Если оба критерия одинаковы, возвращаем 0
return 0;
});
console.log(arrayOfObjects);
```
В этом примере используется лексикографическое сравнение строк. Если `status_date` представляет собой дату в виде строки в формате ISO (как в примере), то такое сравнение будет корректно сортировать даты, потому что ISO формат представляет даты в порядке от года к дню (`YYYY-MM-DD`), что подходит для лексикографической сортировки. Если даты не в формате ISO, возможно потребуется преобразование строк в объекты Date и их сравнение:
```javascript
arrayOfObjects.sort((a, b) => {
// Сравнение по status_sitter
if (a.status_sitter < b.status_sitter) {
return -1;
}
if (a.status_sitter > b.status_sitter) {
return 1;
}
// Если status_sitter одинаковый, то сравниваем по status_date
const dateA = new Date(a.status_date);
const dateB = new Date(b.status_date);
return dateA - dateB;
});
console.log(arrayOfObjects);
```
Важно отметить, что метод `sort` сортирует массив на месте, то есть изменяет исходный массив. Если вам нужно сохранить исходный порядок элементов и создать отсортированную копию, сначала сделайте копию массива (например, используя оператор распространения `...`), а затем отсортируйте эту копию.