在陣列中獲得重複最多的項 JavaScript


我們有一個包含一些值(其中一些也是重複的)的數字/字串文字陣列。我們的工作是編寫一個函式,該函式返回陣列中出現次數最多的元素。

例如 - 如果輸入陣列是 -

const input = ['a', 'v', 'k', 'f', 'a', 'f', 's', 'd', 'd', 'f', 'a', 'j',
'a'];

那麼輸出應該是 -

'a'

因為 'a' 重複的次數最多

因此,讓我們編寫這段程式碼。我們將使用 Map() 來跟蹤我們遇到的所有元素及其計數,最後返回具有最大計數的元素,如下所示:

示例

const input = ['m', 'a', 'v', 'k', 'f', 'a', 'f', 's', 'd', 'd', 'f', 'a',
'j', 'a'];
const findMaximum = arr => {
   const map = arr.reduce((acc, val) => {
      let count = acc.get(val);
      if(count){
         acc.set(val, ++count);
      } else {
         acc.set(val, 1);
      };
      return acc;
   }, new Map());
   return Array.from(map).reduce((acc, val) => {
      if(val[1] > acc[1]){
         return val;
      };
      return acc;
   }, [0, 0])[0];
};
console.log(findMaximum(input));

輸出

控制檯中的輸出將是 -

a

更新於:2020 年 8 月 28 日

93 次瀏覽

開啟你的 職業

完成課程來獲得認證

開始
廣告
© . All rights reserved.