¡No te rindas!
Aquí ya empezamos a tocar código puro y duro (y de hecho fue una introducción un poco… hardcore… jaja) mi mejor consejo para ti son estos:
.
- Razona: trata de entender qué hace cada línea, si no puedes apoyate de un diagrama de flujo, pero trata de entender bien qué sucede.
- Debuguea: Recuerda que usar las instrucciones para imprimir en pantalla te pueden ayudar ver cómo los programas se comportan en cierto punto.
- Busca la documentación: Recuerda siempre buscar documentación, léela y mira cómo funciona cada cosa que usas
.
Por ejemplo, en este caso, ¿por qué me imprimer 8? No lo sé, pero puedo usar debugging:
function secondLargestNumber(numbers) {
console.log(numbers);
numbers.sort();
console.log(numbers);
numbers.reverse();
console.log(numbers);
return numbers[1];
}
Aquí puedes ver cómo use debugging para ver qué valores contenía mi elemento numbers
después de cada acción.
.
Después de esto me doy cuenta de que contiene estos valores, el primer par de corchetes es a como mis valores llegan, el segundo par es después del método sort
y el tercer par es después del método reverse
:
.
.
Uhmm interesante, ¿por qué el método sort
me está ordenando los valores de esa manera? 🤔 ¡No tiene ningún sentido! ¡Vamos a buscar la documentación! (hay varias páginas donde puedes documentarte, yo te dejo esta, aunque en archivos de la clase hay otra):
.
https://www.w3schools.com/jsref/jsref_sort.asp
.
Leyendo veo el método sort()
ordena todo como si fueran strings, y en un string, “4” es mayor que “20”, ¿Por qué? porque estamos comparando strings, no números. De hecho un string podría decirse que compara el primer caracter, por lo que 4 es mayor que 2.
.
Ahora, si miro más abajo veo que ellos ya me proponen un algoritmo donde puedo ordenar los números directamente de forma descendiente, ya ni si quiera necesito el método reverse
! Así que puedo usarlo, este algoritmo tiene su explicación, pero por ahora quédate con que te va a ordenar los números de mayor a menor:
function secondLargestNumber(numbers) {
numbers.sort( function(a, b){
return b-a
} );
return numbers[1];
}
let nums = [8, 4, 6, 10, 9, 11, 20];
console.log(secondLargestNumber(nums))
¡Y listo!, mi programa ya funciona, problema solucionado!
.
Así es como tienen que empezsar a pensar para resolver problemas, y el debugging y la documentación serán sus mejores herramientas, ¡no se rindan!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.