排序数组的函数,将值插入该数组并返回最低索引

时间:2015-07-03 20:19:43

标签: javascript arrays sorting

我正在处理一个JavaScript挑战,要求你编写一个函数:“返回应该将值(第二个参数)插入到排序数组(第一个参数)中的最低索引。例如,{{1应该返回where([1,2,3,4], 1.5),因为它大于1,但小于1 (0th index)。“

提示表示在此挑战之前使用我不熟悉的内置“2 (1st index)”方法。下面是我到目前为止,我认为我很远。

.sort()

4 个答案:

答案 0 :(得分:4)

拆分这两个陈述。



function where(arr, num) {
  arr.push(num);
  arr.sort(function(a, b) {
    return a - b;
  });
  return arr.indexOf(num);
}

console.log(where([40, 60], 30)); // 0
console.log(where([40, 60], 50)); // 1
console.log(where([40, 60], 70)); // 2




答案 1 :(得分:3)

正如@Xufox正确提出的那样,push返回数组的新长度,数组本身。

如下所示重新排序代码:

function where(arr, num) {
  arr.push(num); // Carry out push operation.
  arr.sort(function(a,b){return a-b;}); // Sort array. 
  return arr.indexOf(num); // Return index of 'num'.
}

console.log(where([40, 60], 50));

答案 2 :(得分:0)

function where(arr, num) {
  let index = arr.sort((x,y) => x-y)
                 .find(x => num <= x);

  return index === undefined? arr.length: arr.indexOf(index);
}

答案 3 :(得分:-1)

function getIndexToIns(arr, num) {  
  arr.sort(function(a, b) {
    return a - b;
});
  var i=0;
  while(num>arr[i])
    i++;
 return i;
}