Estoy tratando de implementar la ordenación por selección con javascript, pero parece que me falta algo o estoy haciendo algo absolutamente incorrecto.
como puede comprender a primera vista, sortArray() parece devolver arr con solo un valor 5 , mientras que debería devolver una matriz como tal [5,5,5,5,5,5] .
vale la pena mencionar que cuando comento la línea smallest_index = find_smallest(nums)
Obtengo la supuesta entrada; [5,5,5,5,5,5] .
let nums = [2, 1, 3, 4, 5, 6]; function sortArray(nums) { let arr = new Array(); let smallest_index; for (i = 0; i < nums.length; i++) { smallest_index = find_smallest(nums); arr.push("5"); } return arr; } function find_smallest(arr) { let smallest = arr[0]; let smallest_index = 0; for (i = 1; i < arr.length; i++) { if (arr[i] < smallest) { console.log("this"); smallest = arr[i]; smallest_index = i; } } return smallest_index; } console.log(sortArray(nums));¿alguna ayuda o idea sobre lo que no me estoy dando cuenta o haciendo?
El problema está dentro de sus bucles for. Más específicamente, debe declarar la variable i antes de usarla. Si modifica su código como el fragmento a continuación, entonces su código funciona como se esperaba:
let nums = [2, 1, 3, 4, 5, 6]; function sortArray(nums) { let arr = new Array(); let smallest_index; for (let i = 0; i < nums.length; i++) { smallest_index = find_smallest(nums); arr.push("5"); } return arr; } function find_smallest(arr) { let smallest = arr[0]; let smallest_index = 0; for (let i = 1; i < arr.length; i++) { if (arr[i] < smallest) { console.log("this"); smallest = arr[i]; smallest_index = i; } } return smallest_index; } console.log(sortArray(nums));La única diferencia es usar
for (let i = 1; ...en vez de
for (i = 1; ...