返回陣列中的前兩個元素 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 瀏覽量

開啟你的職業生涯

完成本課程獲得認證

現在開始
廣告
© . All rights reserved.