题目要求
数组(第一个参数)在排序后,将一个值(第二个参数)插入该数组,并使数组保持有序。返回这个新插入元素的最小索引值。 返回值应为一个数字。
例如,getIndexToIns([1,2,3,4], 1.5)
应该返回 1
因为1.5 大于 1
(索引为 0)且小于 2
(索引为 1)。
同样地,getIndexToIns([20,3,5], 19)
应该返回 2
。 因为数组排序后会变成 [3,5,20]
,而 19
小于 20
(索引为 2)且大于 5
(索引为 1)。
题目要求可知该函数有两个参数,一个参数为数组,另一个参数为数字,
1.首先我们先使用.push()方法将数字推入到数组当中
function getIndexToIns(arr, num)
{
arr.push(num);//.push()方法将数字推入到数组当中
arr.sort((a,b)=>a-b);//使用回调函数将数组从小到大进行排序
return arr.indexOf(num);//使用.indexOf()方法检查元素并返回索引位置
}
2.先要用.sort()方法对数组进行排序,再在内部使用回调函数定义排序规则
a-b 是正数,根据规则,b会被移到a的前面
a-b 是负数,根据规则,a会排列到b的前面
3.用.indexOf()检查元素位置是否在元素中存在,存在就返回在数组中的索引位置,不存在就返回-1。
还可以在对数组进行排序后,用for循环去遍历数组直到数组中的值比参数中的数字大,返回当前数组元素的长度即可得到索引值,代码如下:
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;
}