Скопируйте массив, сравнивайте имена через localeCompare с нужной локалью и используйте id как дополнительный порядок и key. Сам sort без comparator не сравнивает поле name.
Как отсортировать пользователей по имени без мутации props?
Скопируйте массив, сравнивайте имена через localeCompare с нужной локалью и используйте id как дополнительный порядок и key. Сам sort без comparator не сравнивает поле name.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
React-компонент получает users и выполняет users.sort() прямо в рендере, затем рисует строки с key по индексу. Имена содержат кириллицу; исходный порядок менять нельзя. Нужны алфавитная сортировка и стабильный порядок при одинаковых именах.
Ответ
Скопируйте массив, сравнивайте имена через localeCompare с нужной локалью и используйте id как дополнительный порядок и key. Сам sort без comparator не сравнивает поле name.
const sorted = [...users].sort((a, b) =>
a.name.localeCompare(b.name, 'ru') || a.id - b.id
);
Здесь id — уникальное число, name — валидная строка по контракту. Выведите отдельное состояние для пустого списка и не используйте индекс как идентичность пользователя. Мемоизация сортировки нужна только при подтверждённой стоимости и стабильных входах, а не как обязательное украшение каждого компонента.