Войти Регистрация
Фронтенд

69. Стабильная сортировка выдачи и компаратор, который возвращает boolean

Средняя

Что выведет код в Node 22? Запишите строки по порядку, по одной на строку.

В работе: Выдача Ozon: «по рейтингу», а при равном рейтинге — дешевле выше. Порядок двух сортировок подряд держится на стабильности sort.

Как проверяем Код не запускаем — предскажите вывод. Пишите строки по порядку, по одной на строку; пробелы по краям не важны. Ответ один на подход: после него показываем разбор.
Array.prototype.sortстабильностьtoSortedкомпаратор

Источник: на задачах Ozon: сортировка выдачи по цене и рейтингу. Условие пересказано своими словами.

  1. const items = [
  2. { name: 'чайник', price: 2490, rating: 4.7 },
  3. { name: 'тостер', price: 1990, rating: 4.7 },
  4. { name: 'блендер', price: 2490, rating: 4.9 },
  5. { name: 'миксер', price: 1990, rating: 4.5 },
  6. { name: 'весы', price: 990, rating: 4.7 },
  7. ];
  8. const names = (a) => a.map((x) => x.name).join(' ');
  9. const byPrice = [...items].sort((a, b) => a.price - b.price);
  10. console.log(names(byPrice));
  11. const byRatingThenPrice = [...byPrice].sort((a, b) => b.rating - a.rating);
  12. console.log(names(byRatingThenPrice));
  13. const broken = [...items].sort((a, b) => a.price > b.price);
  14. console.log(names(broken));
  15. const sorted = items.toSorted((a, b) => a.price - b.price);
  16. console.log(items[0].name, sorted[0].name);
  17. const same = items.sort((a, b) => a.rating - b.rating);
  18. console.log(same === items, items[0].name);
  19. console.log([3, undefined, 1, , 2].sort().length, String([3, undefined, 1, , 2].sort()));