找出元素在排序后数组中的索引

题目:数组(第一个参数)在排序后,将一个值(第二个参数)插入该数组,并使数组保持有序。返回这个新插入元素的最小索引值。 返回值应为一个数字。例如,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 function getIndexToIns(arr, num) {
2 arr.push(num);
3 arr.sort((a,b)=>a-b);
4 return arr.indexOf(num);
5 }
6 getIndexToIns([40, 60], 50);

1. array.prototype.sort()方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的。由于它取决于具体实现,因此无法保证排序的时间和空间复杂性。

1 arr.sort([compareFunction])
1 function getIndexToIns(arr, num) {
2 return arr.concat(num).sort((a,b)=>a-b).indexOf(num);
3 }
4 getIndexToIns([40, 60], 50);

2. concat()

  • String.prototype.concat() 方法将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回
1 str.concat(str2, [, ...strN])
  • Array.prototype.concat()方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组
1 var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])

3. indexOf()

  • Array.prototype.indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1

1 arr.indexOf(searchElement[, fromIndex])
  • String.prototype.indexOf()方法返回调用它的 String对象中第一次出现的指定值的索引,从 fromIndex 处进行搜索。如果未找到该值,则返回 -1

1 str.indexOf(searchValue [, fromIndex])
 1 function getIndexToIns(arr, num) {
 2  let sortedArray = arr.concat(num).sort((a,b) =>a-b);
 3  let res=0;
 4  for(let i =0;i<sortedArray.length;i++){
 5    if(sortedArray[i]===num){
 6      return i;
 7    }
 8  }
 9 }
10 getIndexToIns([40, 60], 50);
function getIndexToIns(arr, num) {
 let res = 0;
 for(let i = 0; i<arr.length; i++) {
if(arr[i]<num){
  res++;
}
 }
return res;
}
getIndexToIns([40, 60], 50);
1 function getIndexToIns(arr, num) {
2   return arr.filter(e => e < num).length;
3 }
4 getIndexToIns([40, 60], 50);

 

posted @ 2021-05-17 00:24  icyyyy  阅读(369)  评论(0)    收藏  举报