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

191
Vistas
ordenar cadenas por elementos de cadena

Necesita ayuda para el siguiente escenario

000-2022, 000-2023, 005-2021, 000-2021, 003-2021, 004-2022, 007-2021

los últimos 4 dígitos son el año y los 3 dígitos del medio son el número de prioridad. Necesito que esto se ordene con el año más alto primero y debajo de él debe venir el número de prioridad correspondiente de ese año y luego debe pasar al siguiente año menor.

Resultado Esperado :

000-2023, 000-2022, 004-2022, 000-2021, 003-2021, 005-2021, 007-2021

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Por aquí

 let arr = ['000-2022', '000-2023', '005-2021', '000-2021', '003-2021', '004-2022', '007-2021'] arr.sort( (a,b)=> { let [aN,aY] = a.split('-').map(Number) , [bN,bY] = b.split('-').map(Number) return aY - bY || aN - bN }) console.log( arr )
 .as-console-wrapper {max-height: 100%!important;top:0 }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Use la función sort() para ordenar. Y usa la función split() para dividir la cadena.

 let arr = ["000-2022", "000-2023", "005-2021", "000-2021", "003-2021", "004-2022", "007-2021"] arr.sort((a,b)=>{ let [aPriority,aYear] = a.split("-").map(it => Number(it)); let [bPriority,bYear] = b.split("-").map(it => Number(it)); return bYear > aYear ? 1 : aYear > bYear ? -1 : (aPriority - bPriority); }); console.log(arr);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Recomiendo encarecidamente desinfectar los datos de entrada primero en un formato estructurado. Entonces el código de clasificación será mucho más fácil de entender.

Aquí hay un ejemplo:

 a = ["000-2022", "000-2023", "005-2021", "000-2021", "003-2021", "004-2022", "007-2021"] structured = a.map((e) => { [priority, year] = e.split("-") return {priority, year} }) // `sort()` changes the array in place, so there's no need for a new var structured.sort((e1, e2) => { if (e1.year !== e2.year) { // year is different, so sort by that first return e1.year < e2.year && 1 || -1 } else { // if year is the same, sort by priority return e1.priority < e2.priority && 1 || -1 } }) console.log(structured)

about 4 years ago · Juan Pablo Isaza 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