【问题标题】:how to return the lowest index of the array?如何返回数组的最低索引?
【发布时间】:2020-01-02 14:50:55
【问题描述】:

例如,getIndexToIns([1,2,3,4], 1.5) 应该返回1,因为它大于1(索引0),但小于2(索引1)。

同样,getIndexToIns([20,3,5], 19) 应该返回 2,因为一旦对数组进行排序,它将看起来像 [3,5,20]19 小于 20(索引 2)并且大于 5(索引1)。

这是我的代码

function getIndexToIns(arr, num) {
  // Find my place in this sorted array.
  arr = arr.sort();
  num = Math.floor(num);
  for(let i=0;i<arr.length;i++){
  }
  return num;
}

getIndexToIns([690, 60], 59);

【问题讨论】:

  • 你试过什么?如果数字小于数组中的全部怎么办?最简单的 IMO 是循环中的 if (arr[i] &gt; num) return i - 1;,如果 num 小于所有条目,则返回 -1。

标签: javascript


【解决方案1】:

您可以使用.findIndex() 查找排序数组中大于您传递的num 元素的第一个元素:

const getIndexToIns = (arr, num) => {
  const res = arr.sort((a, b) => a-b).findIndex(n => n > num);
  return res === -1 ? arr.length : res;
}

console.log(getIndexToIns([1,2,3,4], 1.5));
console.log(getIndexToIns([20,3,5], 19));
console.log(getIndexToIns([20,3,5], 100)); // 3 (array length)

【讨论】:

  • findIndex() 检查-1 并返回数组长度可能是一个不错的选择。
  • @MarkMeyer 好主意,我已将其添加到
  • @RushikeshGanesh 如果答案解决了您的问题,请点击左侧的灰色复选标记mark it as accepted
【解决方案2】:

解决办法

function getIndexToIns(arr, num) {
  var counter = 0;
  // Find my place in this sorted array.
  arr = arr.sort();
  num = Math.floor(num);

  for (let i = 0; i < arr.length; i++) {
    if (num > arr[i]) {
      counter++
    } else {
      break;
    }
  }
  return counter;
}

var count = getIndexToIns([690, 60, 55, 2], 59);
console.log(count);

【讨论】:

    【解决方案3】:

    这就像插入排序的一小部分(您可以阅读 here)。 您要做的只是将num 与排序数组arr 的每个元素进行比较,直到找到一个大于num 的数字。

    所以它看起来像这样:

    for(let i=0;i<arr.length;i++){
        if(num <= arr[i])
            return i;
    }
    

    【讨论】:

      【解决方案4】:

      function getIndexToIns(arr, num) {
          var return_val;
        // Find my place in this sorted array.
        arr = arr.sort();
        num = Math.floor(num);
        for(let i=0;i<arr.length;i++){
          if(arr[i]>num){
              return_val = arr[i-1];
          }
        }
       return return_val;
      }
      
      var return_value = getIndexToIns([690, 60], 59);
      console.log(return_value);
      &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt;

      【讨论】:

        【解决方案5】:

        试试这个

        function getIndexToIns(arr, num) {
          // Find my place in this sorted array.
          var index = 0
          arr.sort((a, b) => a - b)
          for (let i = 0; i < arr.length; i++) {
            if (num > arr[i]) {
        
            } else {
              index = i
              break
            }
          }
          return index;
        }
        
        console.log(
          getIndexToIns([1, 2, 3, 4], 1.5)
        )

        【讨论】:

          【解决方案6】:

          这是您可以尝试的代码

          function getIndexToIns(a, b) {
            let ind = 0;
            for (var i = 0; i < a.length; i++) {
              if (b < a[i]) {
                ind++;
              }
            }
            return ind
          }
          
          console.log(getIndexToIns([20, 3, 5], 19));

          【讨论】:

            【解决方案7】:

            因为arr.sort()排序不对数组进行准确排序,检查这个:Array.sort() doesn't sort numbers correctly

            这段代码运行良好

            function getIndexToIns(arr, num) {
              // Find my place in this sorted array.
              arr.sort(function(a, b) { return a - b; });
              num = Math.floor(num);
              //console.log(arr)
              var found = arr.findIndex(function(e) {
                return e > num;
              });
              return found;
            }
            
            console.log(
              getIndexToIns([1, 2, 3, 4], 1.5),
              getIndexToIns([20, 3, 5], 19),
              getIndexToIns([20, 3, 5], 19)
            )

            【讨论】:

              猜你喜欢
              • 2016-03-06
              • 2021-08-17
              • 2012-07-03
              • 2018-04-03
              • 1970-01-01
              • 1970-01-01
              • 2012-11-13
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多