#JavaScript中如何找到陣列中的重複項目
如何在JavaScript陣列中找到並刪除重複項目
如果你想要刪除重複項目,有一個非常簡單的方法可以利用JavaScript提供的Set資料結構。只需一行程式碼即可完成:
1
| const yourArrayWithoutDuplicates = [...new Set(yourArray)]
|
如果你想要找出哪些項目是重複的,可以使用我們剛剛取得的”無重複陣列”,並從原始陣列中刪除它包含的每一個項目:
1 2 3 4 5 6 7 8 9 10 11 12 13
| const yourArray = [1, 1, 2, 3, 4, 5, 5]
const yourArrayWithoutDuplicates = [...new Set(yourArray)]
let duplicates = [...yourArray] yourArrayWithoutDuplicates.forEach((item) => { const i = duplicates.indexOf(item) duplicates = duplicates .slice(0, i) .concat(duplicates.slice(i + 1, duplicates.length)) })
console.log(duplicates) //[ 1, 5 ]
|
另一個解決方案是將陣列排序,然後檢查”下一個項目”是否與當前項目相同,將其放入一個陣列中:
1 2 3 4 5 6 7 8 9 10 11 12 13
| const yourArray = [1, 1, 2, 3, 4, 5, 5]
let duplicates = []
const tempArray = [...yourArray].sort()
for (let i = 0; i < tempArray.length; i++) { if (tempArray[i + 1] === tempArray[i]) { duplicates.push(tempArray[i]) } }
console.log(duplicates) //[ 1, 5 ]
|
請注意,這只適用於原始值,不適用於物件。對於物件,你需要一種比較的方式。