[Easy] JavaScript 陣列去除重複 removeDuplicates

2024年5月9日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

陣列去除重複 remove duplicates,是 JavaScript 程式面試中,很常會考的入門考題。

陣列去除重複在做的事很簡單,我們透過例子來說明:

removeDuplicate([1, 2, 3, 2]); // [1, 2, 3]
removeDuplicate([5, 5, 6, 6]); // [5, 6]

解法

如果想要做到 O(n) 的時間複雜度,來去除重複,我們可以這麼做

function removeDuplicate(arr) {
  // 先建立一個叫 seen 的集合,來存下已經有的元素
  const seen = new Set();
  // 建立一個叫 output 的陣列,用來輸出最終結果
  const output = [];

  // 用迴圈,走過原本的陣列
  for (let item of arr) {
    // 判斷當前的元素,是否已經在 seen,如果不在,表示還沒有重複
    if (!seen.has(item)) {
      output.push(item); // 所以這時可以放入要被輸出的 output 陣列
      seen.add(item); // 這時紀錄一下這個項目已經被放入,下次就不會再被放入
    }
  }
  return output; // 最終輸出結果,就大功告成了
}
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們