Array.prototype.toSorted()

Baseline 2023
Newly available

Since July 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

El método toSorted() devuelve un nuevo array con sus elementos ordenados en orden ascendente sin alterar el array original. Forma parte del objeto Array y es la versión copying del método sort().

Sintaxis

js
toSorted()
toSorted(compareFn)

Parámetros

compareFn

Opcional. Una función que determina el orden de los elementos. Si es omitida, los elementos del array son convetidos en string y ordenados por su valor Unicode. Ver sort() para más información.

Valor devuelto

Un nuevo array con sus elementos ordenados de manera ascendente.

Descripción

Ver sort() para más información del parametro compareFn.

Cuando se usa en arrays dispersos, el método toSorted() itera las posiciones vacías del array como si tuvieran el valor de undifined.

El método toSorted() es genérico. Solo requiere que el valor de this tenga una propiedad length y propiedades indexadas por enteros.

Ejemplos

Ordenando un array

js
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]

Para más ejemplos de uso, ver sort().

Usando toSorted() en arrays dispersos

Las posiciones vacías son ordenadas como si tuvieran el valor undefined. Siempre son ubicadas al final del array y no se invoca compareFn para ellas.

js
console.log(["a", "c", , "b"].toSorted()); // ['a', 'b', 'c', undefined]
console.log([, undefined, "a", "b"].toSorted()); // ["a", "b", undefined, undefined]

Llamar a toSorted() en objetos que no son arrays

El método toSorted() lee la propiedad length de this. Luego recopila todas las propiedades existentes indexadas por enteros en el rango de 0 a length - 1, las ordena y las escribe en un nuevo array.

js
const arrayLike = {
  length: 3,
  unrelated: "foo",
  0: 5,
  2: 4,
  3: 3, // ignorado por toSorted() dado que length es 3
};
console.log(Array.prototype.toSorted.call(arrayLike));
// [4, 5, undefined]

Especificaciones

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.tosorted

Compatibilidad con navegadores

Ver también