Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как отсортировать массив

Короткий ответ

Для чисел в sort() нужно передать функцию сравнения:

console.log([10, 9, 1].sort((a, b) => a - b).join(', '));

Результат:

1, 9, 10

По убыванию

Поменяйте местами a и b:

console.log([10, 9, 1].sort((a, b) => b - a).join(', '));

Результат:

10, 9, 1

Строки

Строки с учётом правил языка сравнивает localeCompare():

console.log(['apple', 'Pear', 'avocado'].sort((a, b) => a.localeCompare(b, 'en')).join(', '));

Результат:

apple, avocado, Pear

По полю объекта

В функции сравнения обращайтесь к нужному свойству:

const users = [
  { name: 'Anna', age: 30 },
  { name: 'Oleg', age: 25 },
];
users.sort((a, b) => a.age - b.age);
 
console.log(users.map((user) => user.name).join(', '));

Результат:

Oleg, Anna

Не менять исходный массив

sort() меняет сам массив. Чтобы сохранить исходный порядок, сортируйте копию:

const numbers = [3, 1, 2];
const sorted = [...numbers].sort((a, b) => a - b);
 
console.log(numbers.join(', '));
console.log(sorted.join(', '));

Результат:

3, 1, 2
1, 2, 3

Частая ошибка

Без функции сравнения sort() сравнивает числа как строки:

console.log([10, 9, 1, 100].sort().join(', '));

Результат:

1, 10, 100, 9

Функции из этого ответа

  • Array.prototype.sort — Сортирует элементы массива.
  • Array.prototype.toSorted — Возвращает отсортированную копию массива, не меняя исходный.
  • String.prototype.localeCompare — Сравнивает строки по правилам языка — для сортировки по алфавиту.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.