返回数组中的前两个元素 JavaScript


我们有一个 JavaScript 中数字数组,其中包含无序数字。我们的任务是编写一个函数,该函数接收此数字数组,并返回一个包含数组两个元素的数组,即数组的前两个元素(数组中最大的两个元素)。

我们必须一次性完成此操作,即我们需要在线性时间内执行此方法,例如仅使用一个 for 循环,或者如果我们使用 ES6 函数,则必须确保仅使用一次,并避免嵌套会增加时间复杂度的方法。

那么,现在让我们使用 Array.prototype.reduce() 方法编写代码 -

示例

const arr = [23, 65, 67, 23, 2, 6, 87, 23, 45, 65, 3, 234, 3];
const topTwo = arr => {
   if(arr.length < 2){
      return false;
   };
   return arr.reduce((acc, val) => {
      if(val > acc[0]){
         let t = acc[0];
         acc[0] = val;
         acc[1] = t;
      }else if(val > acc[1]){
         acc[1] = val;
      };
      return acc;
   }, [-Infinity, -Infinity]);
};
console.log(topTwo(arr));

输出

控制台中的输出将为 -

[ 234, 87 ]

更新于:31-Aug-2020

264 浏览量

开启你的职业生涯

完成本课程获得认证

现在开始
广告