Estoy practicando mi JavaScript y he estado trabajando en hacer pequeños fragmentos de Code Wars. En lo que estoy trabajando actualmente está aquí:
https://www.codewars.com/kata/554b4ac871d6813a03000035/train/javascript
Entonces, mi lógica era convertir la cadena de números en una matriz de números (llamándola entrada en este caso). Asigne los valores más bajo y más alto a la entrada [0] y luego realice un ciclo para comprobar si la entrada [i] era menor o mayor que el valor actual del valor más alto o más bajo.
Sin embargo, esto ha provocado que se produzcan errores. Parece que no puedo entender por qué JavaScript ocasionalmente asigna valores incorrectamente. Code Wars da un ejemplo de prueba en la función como: ("8 3 -5 42 -1 0 0 -9 4 7 4 -4")
La variable más baja se convierte en -5, pero terminará en -1, mientras que mi variable más alta permanece en 8.
¿Alguien puede darme una pista de dónde me estoy equivocando? Soy consciente de que probablemente haya mejores métodos para hacer esto, eso no es lo que realmente quiero saber. Pero no entiendo cómo 8 puede considerarse más grande que 42. Especialmente porque los estoy comparando directamente con un operador lógico.
Decidí mirar las comparaciones a través de varios console.log, pero los eliminé para los lectores. También miré hacer uno a la vez y esto tampoco ayudó.
Gracias
Aquí está mi código:
function highAndLow(input){ const numbers = input.split(' ') parseInt(numbers) var lowest; var highest; if(numbers.length === 1){ return `${numbers[0]} ${numbers[0]}` } else { if(numbers[0] > numbers[1]){ lowest = numbers[1] highest = numbers[0] } else { lowest = numbers[0] highest = numbers[1] } for(let i = 0; i < numbers.length; i++){ if(numbers[i] > highest){ highest = numbers[i] } else if (numbers[i] < lowest){ lowest = numbers[i] } else { console.log("Values remain same") } } } return `Answer is ${highest} ${lowest}` } console.log(highAndLow('8 3 -5 42 -1 0 0 -9 4 7 4 -4'))