
Si bien el método
const expedientesAlvaroUribe = [
"Falsos testigos",
"Injuria contra Daniel Samper Ospina",
"Falsos positivos",
"Masacres El Aro y La Granja",
"Interceptaciones ilegales o “chuzadas” del DAS",
"Fraude procesal",
"Delitos de lesa humanidad en Antioquia",
"Nexos con paramilitares",
]
Empecemos por lo más básico, el método
Para implementarlo necesitas pasar un callback con dos argumentos que puedes llamar como quieras; cada uno de ellos hace referencia a los elementos que se comparan a medida que la función recorre el array que llamamos “ExpedientesAlvaroUribe”.
expedientesAlvaroUribe.sort((delito_a, delito_b)=>{
console.log(delito_a)
console.log(delito_b)
})
// Output en la consola...
//Injuria contra Daniel Samper Ospina
//Falsos testigos
//Falsos positivos
//Injuria contra Daniel Samper Ospina
//Masacres El Aro y La Granja
//Falsos positivos
//Interceptaciones ilegales o “chuzadas” del DAS
//Masacres El Aro y La Granja
//Fraude procesal
//Interceptaciones ilegales o “chuzadas” del DAS
//Delitos de lesa humanidad en Antioquia
//Fraude procesal
//Nexos con paramilitares
//Delitos de lesa humanidad en Antioquia
Si durante la comparación se retorna -1, el primer elemento comparado se colocará antes del segundo elementos, por el contrario, si se retorna 1 el segundo elemento comparando se colocará antes del primero y si se retorna 0 no habrá ningún cambio en los elementos.
A. Ordenar alfabéticamente por la primera palabra
Para ordenar la colección de strings con los diferentes delitos de Álvaro Uribe, vamos a necesitar dos cosas:
1. Pasar todo el string a minúsculas usando el método
2. Tomar la primera letra del string y convertirla en un número entero para poderla comparar, para eso implementamos el método
expedientesAlvaroUribe.sort((delito_a, delito_b)=>{
// Si el primer elemento tiene un número superior, se posiciona arriba
// Si el primer elemento tiene un número inferior, se posiciona abajo
if(delito_a.toLowerCase().charCodeAt(0) < delito_b.toLowerCase().charCodeAt(0)) return -1;
if(delito_a.toLowerCase().charCodeAt(0) > delito_b.toLowerCase().charCodeAt(0)) return 1;
})
Ahora la colección de delitos de Álvaro Uribe se ve así:
// Output en la consola...
// 0: "Delitos de lesa humanidad en Antioquia"
// 1: "Falsos testigos"
// 2: "Falsos positivos"
// 3: "Fraude procesal"
// 4: "Injuria contra Daniel Samper Ospina"
// 5: "Interceptaciones ilegales o “chuzadas” del DAS"
// 6: "Masacres El Aro y La Granja"
// 7: "Nexos con paramilitares"
B. Ordenar alfabéticamente por la segunda palabra
Nuestra colección ya se encuentra ordenada alfabéticamente por la primera letra de cada palabra, pero no por la segunda; para lograr esto, básicamente tenemos que hacer lo mismo, pero con un paso extra, veamos:
1. Debemos identificar la segunda palabra del string, para eso vamos a implementar el método
2. Implementamos los mismos métodos del punto A
expedientesAlvaroUribe.sort((delito_a, delito_b)=>{
if(delito_a.toLowerCase().charCodeAt(0) < delito_b.toLowerCase().charCodeAt(0)) return -1;
if(delito_a.toLowerCase().charCodeAt(0) > delito_b.toLowerCase().charCodeAt(0)) return 1;
if(delito_a.split(' ')[1].toLowerCase().charCodeAt(0) < delito_b.split(' ')[1].toLowerCase().charCodeAt(0)) return -1;
if(delito_a.split(' ')[1].toLowerCase().charCodeAt(0) > delito_b.split(' ')[1].toLowerCase().charCodeAt(0)) return 1;
})
console.log(expedientesAlvaroUribe)
// Output en la consola...
// 0: "Delitos de lesa humanidad en Antioquia"
// 1: "Falsos positivos"
// 2: "Fraude procesal"
// 3: "Falsos testigos"
// 4: "Injuria contra Daniel Samper Ospina"
// 5: "Interceptaciones ilegales o “chuzadas” del DAS"
// 6: "Masacres El Aro y La Granja"
// 7: "Nexos con paramilitares"
Si necesitáramos ordenar el arreglo de strings por una tercera palabra, dentro del callback implementaríamos los pasos del punto B.
No está de más mencionar que con el método
Publicar un comentario