Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

508
Vistas
¿Ordenar cadenas en orden descendente en Javascript (más eficientemente)?

W3CSchools tiene este ejemplo:

 var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); fruits.reverse();

¿Es esta la forma más eficiente de ordenar cadenas en orden descendente en Javascript?

Actualizar

Una de las respuestas es usar localeCompare . Solo tengo curiosidad por saber si si hacemos reverse() , ¿funcionará para todas las configuraciones regionales (tal vez esta sea una pregunta separada, solo házmelo saber en los comentarios)?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

si consideras

 obj.sort().reverse();

contra

 obj.sort((a, b) => (a > b ? -1 : 1))

contra

 obj.sort((a, b) => b.localeCompare(a) )

El ganador de rendimiento es: obj.sort().reverse() .

Probando con una matriz de 10.000 elementos, obj.sort().reverse() es más rápido que obj.sort( function ) (excepto en Chrome) y obj.sort( function ) (usando localCompare ).

Prueba de rendimiento aquí:

 var results = [[],[],[]] for(let i = 0; i < 100; i++){ const randomArrayGen = () => Array.from({length: 10000}, () => Math.random().toString(30)); const randomArray = randomArrayGen(); const copyArray = x => x.slice(); obj = copyArray(randomArray); let t0 = performance.now(); obj.sort().reverse(); let t1 = performance.now(); obj = copyArray(randomArray); let t2 = performance.now(); obj.sort((a, b) => (a > b ? -1 : 1)) let t3 = performance.now(); obj = copyArray(randomArray); let t4 = performance.now(); obj.sort((a, b) => b.localeCompare(a)) let t5 = performance.now(); results[0].push(t1 - t0); results[1].push(t3 - t2); results[2].push(t5 - t4); } const calculateAverage = x => x.reduce((a,b) => a + b) / x.length ; console.log("obj.sort().reverse(): " + calculateAverage(results[0])); console.log("obj.sort((a, b) => (a > b ? -1 : 1)): " + calculateAverage(results[1])); console.log("obj.sort((a, b) => b.localeCompare(a)): " + calculateAverage(results[2]));

over 4 years ago · Santiago Trujillo Denunciar

0

Usar solo sort e reverse a > Z , eso es incorrecto si desea ordenar cadenas de minúsculas y mayúsculas:

 var arr = ["a","b","c","A","B","Z"]; arr.sort().reverse(); console.log(arr)//<-- [ 'c', 'b', 'a', 'Z', 'B', 'A' ] wrong!!!

caracteres ingleses

 var arr = ["a","b","c","A","B","Z"]; arr.sort((a,b)=>b.localeCompare(a)) console.log(arr)

Caracteres especiales usando locales , en este ejemplo es (español)

 var arr = ["a", "á", "b","c","A","Á","B","Z"]; arr.sort((a, b) => b.localeCompare(a, 'es', {sensitivity: 'base'})) console.log(arr)

La sensibilidad en este caso es base :

Solo las cadenas que difieren en las letras base se comparan como desiguales. Ejemplos: a ≠ b, a = á, a = A.

over 4 years ago · Santiago Trujillo Denunciar

0

La forma más fácil de invertir el orden de clasificación es intercambiando los operandos. En ES2015 eso es tan fácil como [b, a] = [a, b] . Un ejemplo completo:

 function compareWithOrder(a, b, shouldReverse = false) { if (shouldReverse) { [b, a] = [a, b] } return yourComparatorFn(a, b) }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda