Spec-Zone.ru › JavaScript

Array.prototype.toSorted()

Базовая версия Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2023 года.

Метод toSorted() экземпляров Array является копирующей версией метода sort(). Он возвращает новый массив с элементами, отсортированными по возрастанию.

Синтаксис

toSorted()
toSorted(compareFn)

Параметры

compareFn Необязательно
Функция, которая определяет порядок элементов. Если опущена, элементы массива преобразуются в строки, а затем сортируются в соответствии со значением кодовой точки Юникода каждого символа. См. sort() для получения дополнительной информации.

Возвращаемое значение

Новый массив с элементами, отсортированными по возрастанию.

Описание

См. sort() для получения дополнительной информации о параметре compareFn.

При использовании на разреженных массивах метод toSorted() перебирает пустые слоты так, как если бы они имели значение undefined.

Метод toSorted() является обобщенным. Он ожидает, что значение this будет иметь свойство length и целочисленные свойства-ключи.

Примеры

Сортировка массива

const months = ["Mar", "Jan", "Feb", "Dec"];
const sortedMonths = months.toSorted();
console.log(sortedMonths); // ['Dec', 'Feb', 'Jan', 'Mar']
console.log(months); // ['Mar', 'Jan', 'Feb', 'Dec']

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(["a", "c", , "b"].toSorted()); // ['a', 'b', 'c', undefined]
console.log([, undefined, "a", "b"].toSorted()); // ["a", "b", undefined, undefined]

Вызов toSorted() на объектах, не являющихся массивами

Метод toSorted() считывает свойство length объекта this. Затем он собирает все существующие целочисленные свойства-ключи в диапазоне от 0 до length - 1, сортирует их и записывает в новый массив.

const arrayLike = {
  length: 3,
  unrelated: "foo",
  0: 5,
  2: 4,
  3: 3, // ignored by toSorted() since length is 3
};
console.log(Array.prototype.toSorted.call(arrayLike));
// [4, 5, undefined]

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-array.prototype.tosorted

Совместимость с браузерами

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
toSorted
110
110
115
96
16
110
115
74
16
21.0
110
16
1.0.0
1.31
20.0.0

См. также

  • Полифил Array.prototype.toSorted в core-js
  • Полифил es-shims Array.prototype.toSorted
  • Руководство по индексированным коллекциям
  • Array.prototype.sort()
  • Array.prototype.toReversed()
  • Array.prototype.toSpliced()
  • Array.prototype.with()
  • TypedArray.prototype.toSorted()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/toSorted

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API