Return the lowest index at which a value (second argument) should be inserted into an array (first argument) once it has been sorted. The returned value should be a number.
For example, getIndexToIns([1,2,3,4], 1.5) should return 1 because it is greater than 1 (index 0), but less than 2 (index 1).
Likewise, getIndexToIns([20,3,5], 19) should return 2 because once the array has been sorted it will look like [3,5,20] and 19 is less than 20 (index 2) and greater than 5 (index 1).
Solution:
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;
}
I don't understand the return arr.length and its purpose at the end? Why would we want to return the length of the array and not i, the index of the element in question?
That means num is greater than all values of arr and it's position in sorted array is the last one.
In other words you need to add num at the end of sorted array.
Let say arr=[1, 2, 3] and num = 4, so where do you want to add num? At position 3 that is arr.length.
Why would we want to return the length of the array and not
i?
Because you don't access i after loop because of let.
If you want to use i instead of arr.length use var instead of 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;
}
See this: What's the difference between using “let” and “var”?