Array.prototype.toSorted()
Baseline2023Newly available
Since July 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
МетодtoSorted()
экземпляровArray
возвращает новый массив с элементами, отсортированными в порядке возрастания. Являетсякопирующей версией методаsort()
.
Синтаксис
toSorted()toSorted(compareFn)
Параметры
compareFn
НеобязательныйФункция, определяющая порядок сортировки. Если этот параметр опущен, элементы массива преобразуются в строки, а затем сортируются в соответствии со значением каждого символа в стандарте Юникод. Смотрите
sort()
для получения дополнительной информации.
Возвращаемое значение
Новый массив с отсортированными в порядке возрастания элементами.
Описание
Смотритеsort()
для получения дополнительной информации о параметреcompareFn
.
При использовании методаtoSorted()
с разрежёнными массивами методtoSorted()
обрабатывает пустые элементы так, как если бы они имели значениеundefined
.
МетодtoSorted()
является универсальным. Для его работы необходимо только, чтобы значениеthis
имело свойствоlength
и свойства с целочисленными индексами.
Примеры
Сортировка элементов массива
const months = ["Мар", "Янв", "Фев", "Дек"];const sortedMonths = months.toSorted();console.log(sortedMonths); // ["Дек", "Мар", "Фев", "Янв"]console.log(months); // ["Мар", "Янв", "Фев", "Дек"]const values = [1, 10, 21, 2];const sortedValues = values.toSorted((a, b) => a - b);console.log(sortedValues); // [1, 2, 10, 21]console.log(values); // [1, 10, 21, 2]
Смотритеsort()
для изучения дополнительных примеров использования.
Использование toSorted() на массивах с пропущенными элементами
Пустые элементы сортируются так, как если бы они имели значениеundefined
. В результате сортировки они всегда оказываются в конце массива, при этомcompareFn
для них не вызывается.
console.log(["а", "в", , "б"].toSorted()); // ["а", "б", "в", undefined]console.log([, undefined, "а", "б"].toSorted()); // ["а", "б", undefined, undefined]
Вызов метода toSorted() для объектов, не являющихся массивами
В данном примере создаётся объектarrayLike
, который не является массивом, но он обладает свойствомlength
и целочисленными ключами. ПосколькуarrayLike
имеет свойствоlength
, равное 3, методtoSorted()
создаст новый массив с длиной равной 3. В результирующий массив попадут отсортированные значения с целочисленными ключами в диапазоне от0
доlength - 1
. Элемент с индексом1
пропущен, поэтому он превратится в значениеundefined
.
const arrayLike = { length: 3, unrelated: "foo", 0: 5, 2: 4, 3: 3, // игнорируется методом toSorted(), так как длина равна 3};console.log(Array.prototype.toSorted.call(arrayLike));// [4, 5, undefined]
Спецификации
Specification |
---|
ECMAScript® 2026 Language Specification # sec-array.prototype.tosorted |