| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/sort | [Back] [Original] |
Get to know MDN better
Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.
This feature is well established and works across many devices and browser versions. Its been available across browsers since julio de 2015.
El mtodo sort() ordena los elementos de un arreglo (array) localmente y devuelve el arreglo ordenado. La ordenacin no es necesariamente estable. El modo de ordenacin por defecto responde a la posicin del valor del string de acuerdo a su valor Unicode.
arr.sort([compareFunction])
compareFunctionOpcional. Especifica una funcin que define el modo de ordenamiento. Si se omite, el array es ordenado atendiendo a la posicin del valor Unicode de cada caracter, segn la conversin a string de cada elemento.
firstElEl primer elemento a comparar.
secondElEl segundo elemento a comparar.
El array ordenado.
Si no se provee compareFunction, los elementos son ordenados convirtindolos a strings y comparando la posicin del valor Unicode de dichos strings. Por ejemplo, "Cherry" viene antes que "banana" (porque las maysculas van antes que las minsculas en la codificacin Unicode) . En un ordenamiento numrico, 9 est antes que 80, pero dado que los nmeros son convertidos a strings y ordenados segn el valor Unicode, el resultado ser "80" antes que "9".
const frutas = ["guindas", "manzanas", "bananas"];
frutas.sort(); // ['bananas', 'guindas', 'manzanas']
const puntos = [1, 10, 2, 21];
puntos.sort(); // [1, 10, 2, 21]
// Tenga en cuenta que 10 viene antes que 2
// porque '10' viene antes que '2' segn la posicin del valor Unicode.
const cosas = ["word", "Word", "1 Word", "2 Words"];
cosas.sort(); // ['1 Word', '2 Words', 'Word', 'word']
// En Unicode, los nmeros vienen antes que las letras maysculas
// y estas vienen antes que las letras minsculas.
Si se provee compareFunction, los elementos del array son ordenados de acuerdo al valor que retorna dicha funcin de comparacin. Siendo a y b dos elementos comparados, entonces:
compareFunction(a, b) es menor que 0, se sita a en un indice menor que b. Es decir, a viene primero.compareFunction(a, b) retorna 0, se deja a y b sin cambios entre ellos, pero ordenados con respecto a todos los elementos diferentes. Nota: el estandar ECMAscript no garantiza este comportamiento, por esto no todos los navegadores (p.ej. Mozilla en versiones que datan hasta el 2003) respetan esto.compareFunction(a, b) es mayor que 0, se sita b en un indice menor que a.compareFunction(a, b) siempre debe retornar el mismo valor dado un par especifico de elementos a y b como sus argumentos. Si se retornan resultados inconsistentes entonces el orden de ordenamiento es indefinido.Entonces, la funcin de comparacin tiene la siguiente forma:
function compare(a, b) {
if (a es menor que b segn criterio de ordenamiento) {
return -1;
}
if (a es mayor que b segn criterio de ordenamiento) {
return 1;
}
// a debe ser igual b
return 0;
}
Para comparar nmeros en lugar de strings, la funcin de comparacin puede simplemente restar b de a. La siguiente funcin ordena el array de modo ascendente:
const compareNumbers = (a, b) => a - b;
El metodo sort puede ser usado convenientemente con function expressions (y closures):
const numbers = [4, 2, 5, 1, 3];
numbers.sort(function (a, b) {
return a - b;
});
console.log(numbers); // [1, 2, 3, 4, 5]
Los objectos pueden ser ordenados por el valor de una de sus propiedades.
const items = [
{ name: "Edward", value: 21 },
{ name: "Sharpe", value: 37 },
{ name: "And", value: 45 },
{ name: "The", value: -12 },
{ name: "Magnetic", value: 13 },
{ name: "Zeros", value: 37 },
];
items.sort(function (a, b) {
if (a.name > b.name) {
return 1;
}
if (a.name < b.name) {
return -1;
}
// a must be equal to b
return 0;
});
Un array de elementos string, sin especificar una funcin de comparacin:
const arr = ["a", "b", "Z", "Aa", "AA"];
arr.sort(); //[ 'AA', 'Aa', 'Z', 'a', 'b' ]
Un array de elementos numricos, sin funcin de comparacin:
const arr = [40, 1, 5, 200];
arr.sort(); //[ 1, 200, 40, 5 ]
Un array de elementos numricos, usando una funcin de comparacin:
const arr = [40, 1, 5, 200];
function comparar(a, b) {
return a - b;
}
arr.sort(comparar); // [1, 5, 40, 200]
Lo mismo pero usando una funcin annima normal:
const arr = [40, 1, 5, 200];
arr.sort(function (a, b) {
return a - b;
}); // [ 1, 5, 40, 200 ]
Lo mismo escrito ms compacto mediante una funcin flecha:
const arr = [40, 1, 5, 200];
arr.sort((a, b) => a - b); // [ 1, 5, 40, 200 ]
El siguiente ejemplo abunda en la idea de ordenar con y sin funcin de comparacin. Adems, ilustra una manera de mostrar un array una vez creado. El mtodo join es usado para convertir el array en una cadena de texto que imprimir. Al no pasarle un argumento que indique el separador, usar la coma por defecto para separar los elementos del array dentro de la cadena.
const arr = ["80", "9", "700", 40, 1, 5, 200];
function comparar(a, b) {
return a - b;
}
console.log("original:", arr.join());
console.log("ordenado sin funcin:", arr.sort());
console.log("ordenado con funcin:", arr.sort(comparar));
El ejemplo produce el siguiente resultado. Como muestra la salida, cuando una funcin de comparacin es usada, los nmeros se ordenan correctamente, sean estos valores numricos o strings numricos.
original: 80,9,700,40,1,5,200 ordenado sin funcin: 1,200,40,5,700,80,9 ordenado con funcin: 1,5,9,40,80,200,700
Para ordenar strings con characters no ASCII, i.e. strings con caracteres con acento (e, , , a, , etc.), strings de lenguajes diferentes al ingls: use String.localeCompare. Esta funcin puede comparar esos caracteres para que aparezcan en el orden correcto.
const items = ["rserv", "premier", "clich", "communiqu", "caf", "adieu"];
items.sort(function (a, b) {
return a.localeCompare(b);
});
// items is ['adieu', 'caf', 'clich', 'communiqu', 'premier', 'rserv']
La compareFunction puede ser invocada mltiples veces por elemento dentro del array. Dependiendo de la naturaleza de compareFunction, este puede resultar en una alta penalizacin de rendimiento. Cuanto ms trabajo hace una compareFunction y ms elementos hay para ordenar, resulta ms recomendable usar una funcin map para ordenar. La idea es recorrer el array una sola vez para extraer los valores usados para ordenar en un array temporal, ordenar el array temporal y luego recorrer el array para lograr el orden correcto.
// el array a ordenar
const list = ["Delta", "alpha", "CHARLIE", "bravo"];
// array temporal contiene objetos con posicin y valor de ordenamiento
const mapped = list.map(function (el, i) {
return { index: i, value: el.toLowerCase() };
});
// ordenando el array mapeado que contiene los valores reducidos
mapped.sort(function (a, b) {
if (a.value > b.value) {
return 1;
}
if (a.value < b.value) {
return -1;
}
return 0;
});
// contenedor para el orden resultante
const result = mapped.map(function (el) {
return list[el.index];
});
| Specification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-array.prototype.sort |
This page was last modified on 19 jun 2025 by MDN contributors.
ArrayArray.prototype.at()Array.prototype.concat()Array.prototype.copyWithin()Array.prototype.entries()Array.prototype.every()Array.prototype.fill()Array.prototype.filter()Array.prototype.find()Array.prototype.findIndex()findLast()findLastIndex()Array.prototype.flat()Array.prototype.flatMap()Array.prototype.forEach()Array.prototype.includes()Array.prototype.indexOf()Array.prototype.join()Array.prototype.keys()Array.prototype.lastIndexOf()Array.prototype.map()Array.prototype.pop()Array.prototype.push()Array.prototype.reduce()Array.prototype.reduceRight()Array.prototype.reverse()Array.prototype.shift()Array.prototype.slice()Array.prototype.some()Array.prototype.sort()Array.prototype.splice()Array.prototype.toLocaleString()toReversed()Array.prototype.toSorted()toSpliced()Array.prototype.toString()Array.prototype.unshift()Array.prototype.values()with()Array.prototype[@@iterator]()Object/FunctionYour blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |