[Easy] JavaScript 陣列去除重複 removeDuplicates
2024年5月9日
💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
陣列去除重複 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; // 最終輸出結果,就大功告成了
}