JavaScript 中限制元素出現次數為 n 次


問題

我們需要編寫一個 JavaScript 函式,它接收一個可能包含重複整數的整數陣列 arr 作為第一個引數,以及一個數字 num 作為第二個也是最後一個引數。

我們的函式的任務是遍歷陣列並檢查是否存在某個數字在陣列中出現的次數超過 n 次。

如果存在任何這樣的元素,我們應該刪除其額外的出現次數,以將其出現次數限制在最多 num 次。

例如,如果函式的輸入為 -

輸入

const arr = [4, 1, 3, 1, 4, 1, 3, 4, 2];
const num = 2;

輸出

const output = [4, 1, 3, 1, 4, 3, 2];

輸出解釋

4 和 1 都出現了三次,因此刪除了它們的第三次出現

示例

以下是程式碼 -

 即時演示

const arr = [4, 1, 3, 1, 4, 1, 3, 4, 2];
const num = 2;
const deleteExtra = (arr = [], num = 1) => {
   if(num === 0){
      return [];
   };
   const res = [];
   const map = {};
   for(let i = 0; i < arr.length; i++){
      const el = arr[i];
      map[el] = (map[el] || 0) + 1;
      if(map[el] <= num){
         res.push(el);
      };
   };
   return res;
};
console.log(deleteExtra(arr, num));

輸出

[ 4, 1, 3, 1, 4, 3, 2 ]

更新於: 2021年4月22日

179 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.