Сортировка массива объектов по имени в алфавитном порядке JavaScript

У меня есть массив с объектами пользователей, и мне нужно отсортировать его по полю name в алфавитном порядке.

Вот пример одного объекта из массива:

var client = {
   description: null,
   mail: "[email protected]",
   name: "Мария",
   userId: 125,
   profileImage: null,
   lastActivity: null,
   surname: "Петрова",
   username: "mary_p"
};

Какой способ лучше всего использовать для сортировки такого массива по полю name? Нужен рабочий пример кода на JavaScript.

Используй sort() с localeCompare() - это правильно отсортирует массив по полю name, даже с кириллицей:

const sortedClients = clients.sort((a, b) => a.name.localeCompare(b.name));

Чтобы игнорировать регистр, добавь параметры:

clients.sort((a, b) => a.name.localeCompare(b.name, 'ru', { sensitivity: 'base' }));

Так получишь корректную сортировку по правилам русского языка.

Для обратной сортировки просто поменяй a и b местами в функции сравнения. И убедись, что поле name заполнено - пустые значения могут вызвать ошибку.

Да, у меня была та же проблема! Обычная сортировка строк с русскими буквами глючит. localeCompare работает отлично. Только если у тебя в name могут быть null или undefined, добавь проверку: a.name && b.name ? a.name.localeCompare(b.name) : 0. А то словишь ошибку.