Estoy luchando por saber cómo funciona este código, ¿cómo funciona la parte maxNum? maxNum[0] <numbers[i] ¿cómo toma el último número de la matriz?
function sortThem(numbers) { let minNum = numbers[0] let maxNum = numbers[0] for (let i = 0; i < numbers.length; i++) { if (minNum > numbers[i]) { minNum = numbers[i] } else if (maxNum < numbers[i]) { maxNum = numbers[i] } } console.log(maxNum) const minMax = [minNum, maxNum] return minMax } const results = sortThem([2, 9, 10, 17, 45]) console.log(results)Ambos comienzan en 2 en este ejemplo.
let minNum = numbers[0]//equals first element in the numbers array and thats 2 in this example let maxNum = numbers[0]// equals 2 as wellLuego comienzas a iterar a través de la matriz de números
Veamos cómo obtienes tu número más bajo primero:
if(minNum > numbers[i]){ 1st loop minNum = 2 not greater than 2, nothing happens 2nd loop minNum = 2 not greater than 9, nothing happens 3rd loop minNum = 2 not greater than 10, nothing happens 4th loop minNum = 2 not greater than 17, nothing happens last loop minNum = 2 not greater than 45, nothing happensminNum = nunca cambia durante toda la iteración porque no se encontró ningún número menor que 2, por lo que mantiene el valor inicial
Ahora para el maxNum:
} else if (maxNum < numbers[i]){ 1st loop maxNum= 2, numbers[i]=2, numbers[i] not greater than maxNum, nothing happens 2nd loop maxNum= 2, numbers[i]=9, numbers[i] is greater than maxNum, maxNum=9 now 3rd loop maxNum= 9, numbers[i]=10, numbers[i] is greater than maxNum, maxNum=10 now 4th loop maxNum= 10, numbers[i]=17, numbers[i] is greater than maxNum, maxNum=17 now last loop maxNum= 17, numbers[i]=45, numbers[i] is greater than maxNum, maxNum=45 nowmaxNum se sobrescribirá siempre que pueda encontrar un número mayor que el valor previamente almacenado. Espero que eso explique lo que no entiendes.
Dado un contexto que no entiendo completamente, estimo que desea saber cómo funciona la comparación.
function sortThem(numbers) { let minNum = numbers[0] let maxNum = numbers[0] for (let i = 0; i < numbers.length; i++) { // you can start loop at index 1 since you have set default val to 0 if (minNum > numbers[i]) { // if my current number in array is smaller than the most recent minNum minNum = numbers[i] // set minNum to current number Exit out of if/else structure since else will not be triggered } else if (maxNum < numbers[i]) { // if currentNumber is greater than given maxNum maxNum = numbers[i] //set maxnum to current number } } console.log(maxNum) const minMax = [minNum, maxNum] //useless return minMax // return [minNum, maxNum]; } const results = sortThem([2, 9, 10, 17, 45]) console.log(results)No tengo idea si respondió a su pregunta, pero creo que esa es la explicación de esta función.
Usted define minNum y maxNum , que comienzan siendo solo un valor de la matriz (en este caso, el índice 0 / el primero, que es 2).
for (let i = 0; i < numbers.length; i++) { /* ...*/ } significa que todo dentro de {} se repetirá la misma cantidad de veces que la matriz tiene índices, y cada iteración se incrementará i por uno (comenzando con 0, por lo que recorrerá todos los índices de la matriz de números)
por lo que los numbers[i] obtienen valor en la i -ésima posición (la primera vez será 2 , la segunda vez 9 ...)
Las condiciones if verifican si el minNum / maxNum actual es menor/mayor que el valor en el i -ésimo índice de la matriz de números, y si lo es, establece minNum / maxNum en ese valor, por lo que aumenta / disminuye.
Básicamente, el código pasa por cada valor en la matriz que definiste, y cada vez que encuentra un valor mayor, lo establece como valor para minNum / maxNum .
En este caso, minNum se establece en 2 y, como es el más pequeño de todos, se mantiene en 2. maxNum comienza en 2, aumenta a 9, 10, 17 y luego a 45.