Devuelve el índice más bajo en el que se debe insertar un valor (segundo argumento) en una matriz (primer argumento) una vez que se ha ordenado. El valor devuelto debe ser un número.
Por ejemplo, getIndexToIns([1,2,3,4], 1.5) debería devolver 1 porque es mayor que 1 (índice 0 ), pero menor que 2 (índice 1 ).
Del mismo modo, getIndexToIns([20,3,5], 19) debería devolver 2 porque una vez ordenada la matriz se verá como [3,5,20] y 19 es menor que 20 (índice 2) y mayor que 5 ( índice 1).
Solución:
function getIndexToIns(arr, num) { arr.sort((a, b) => a - b); for (let i = 0; i < arr.length; i++) { if (arr[i] >= num) return i; } return arr.length; } No entiendo el return arr.length y su propósito al final. ¿Por qué querríamos devolver la longitud de la matriz y no i , el índice del elemento en cuestión?
Eso significa que num es mayor que todos los valores de arr y su posición en la matriz ordenada es la última.
En otras palabras, debe agregar num al final de la matriz ordenada.
Digamos arr=[1, 2, 3] y num = 4 , entonces, ¿dónde quieres agregar num ? En la posición 3 que es arr.length .
¿Por qué querríamos devolver la longitud de la matriz y no
i?
Porque no accedes a i after loop debido a let .
Si desea usar i en lugar de arr.length use var en lugar de let:
function getIndexToIns(arr, num) { arr.sort((a, b) => a - b); for (var i = 0; i < arr.length; i++) { if (arr[i] >= num) return i; } return i; }Vea esto: ¿Cuál es la diferencia entre usar "let" y "var" ?