返回数组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 ]