Выбор ответа Junior Разминка: короткие функции обновлено
Сортировка по двум полям
Вопрос
Как отсортирует пользователей этот компаратор?
users.toSorted((a, b) => a.age - b.age || a.name.localeCompare(b.name, 'ru'));
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: По возрасту по возрастанию, а при равном возрасте по имени. Если возраст разный, a.age - b.age даёт ненулевое число, оно истинно, и возвращает его: порядок определяет возраст.
Варианты ответа
- По возрасту по возрастанию, а при равном возрасте по имениправильный ответ
- Только по имени:
||вернёт результатlocaleCompare - По имени по алфавиту, а при одинаковых именах по возрасту
- Выбросит ошибку: компаратор должен вернуть ровно -1, 0 или 1
Разбор
Если возраст разный, a.age - b.age даёт ненулевое число, оно истинно, и || возвращает его: порядок определяет возраст. Если возраст одинаковый, разность равна 0, она ложна, и || переходит к сравнению имён. Так удобно записывать сортировку по нескольким ключам. Компаратор может возвращать любое число, важен только знак. localeCompare с 'ru' правильно ставит, например, «ё» рядом с «е».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.