【问题标题】:Function to Sort an Array, Insert a Value into that Array and Return the Lowest Index对数组进行排序,将值插入该数组并返回最低索引的函数
【发布时间】:2015-07-03 20:19:42
【问题描述】:

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

提示指示使用在此挑战之前我不熟悉的内置“.sort()”方法。以下是我到目前为止所拥有的,我认为我还很遥远。

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

console.log(where([40, 60], 50)); // returns "unexpected identifier" 

【问题讨论】:

  • push 返回数组的新长度,而不是数组本身。您无法对长度进行排序。
  • 我正在寻找什么方法可以将参数“num”添加到“arr”的末尾,然后让我对“arr”进行排序?我的“排序”方法是否正确实施以对我的数组进行排序? @Xufox
  • 简单地拆分两个语句!首先是arr.push(num),然后是arr.sort(…)。是的,sort 函数看起来没问题。
  • 我只是想说没关系,自然的结论是拆分语句并第二次调用“arr”。非常感谢!

标签: javascript arrays sorting


【解决方案1】:

拆分两个语句。

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

【讨论】:

    【解决方案2】:

    正如@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));
    

    【讨论】:

      【解决方案3】:
      function where(arr, num) {
        let index = arr.sort((x,y) => x-y)
                       .find(x => num <= x);
      
        return index === undefined? arr.length: arr.indexOf(index);
      }
      

      【讨论】:

        【解决方案4】:
        function getIndexToIns(arr, num) {  
          arr.sort(function(a, b) {
            return a - b;
        });
          var i=0;
          while(num>arr[i])
            i++;
         return i;
        }
        

        【讨论】:

        • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
        猜你喜欢
        • 2017-11-02
        • 2019-04-27
        • 1970-01-01
        • 2015-11-11
        • 1970-01-01
        • 2018-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多