Я столкнулся с этой сортировкой массива, и я не понимаю функцию сравнения в точке, где включено «-1: 1». Пожалуйста, может кто-нибудь объяснить мне, что именно делает функция сравнения?
const rows = [
createECG('ad0917d4-e02d-4c46-a5aa-dd83717684e9', '28/06/2022', 'pending'),
createECG('9034124a-2ac8-4d52-8711-ef1351a5c18a', '18/05/2022', 'complete'),
createECG('a2a7a1f4-81a0-4b70-b1e2-ee7a384a1f4f', '01/05/2022', 'pending'),
createECG('e5427e62-5897-4eee-a6a6-8f9925feef96', '21/04/2022', 'complete')
].sort((a) => (a.status === 'pending' ? -1 : 1)); // The object 'a' has a property called 'status'
console.info(rows);
function createECG(id, date, status) {
return {id, date, status};
}


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно взять дельту сравнения для симметричной сортировки.
function createECG(id, date, status) {
return { id, date, status };
}
const
rows = [
createECG('ad0917d4-e02d-4c46-a5aa-dd83717684e9', '28/06/2022', 'pending'),
createECG('9034124a-2ac8-4d52-8711-ef1351a5c18a', '18/05/2022', 'complete'),
createECG('a2a7a1f4-81a0-4b70-b1e2-ee7a384a1f4f', '01/05/2022', 'pending'),
createECG('e5427e62-5897-4eee-a6a6-8f9925feef96', '21/04/2022', 'complete')
]
.sort((a, b) => (b.status === 'pending') - (a.status === 'pending'));
console.info(rows);.as-console-wrapper { max-height: 100% !important; top: 0; }Функция сравнения возвращает -1, если первый аргумент a меньше, чем b, если его статус равен pending. Это указывает на то, что a меньше, чем b, поэтому его следует отсортировать заранее. Предполагаемый результат состоит в том, что все элементы pending будут в начале результата.
Но на самом деле это неверно, потому что функция сравнения должна быть последовательной — если a меньше, чем b, то b также не должно быть меньше, чем a. Когда он сравнивает два ожидающих объекта, он возвращает -1, когда они передаются в любом порядке. В этом случае функция сравнения должна вернуть 0, но это не так.
Сортировка аналогична фильтрации, ваш код означает... Когда a.status === 'в ожидании' равно 1, означает, что этот элемент имеет свойство состояния, установленное как ожидающее, а когда оно равно -1, означает, что статус не установлен на ожидание, тогда, поскольку 1 является правильным и превосходящим, то элементы со статусом ожидания будут первыми.