JavaScript, cách tìm các bản sao trong một mảng

Cách tìm và loại bỏ các bản sao trong một mảng JavaScript

Nếu bạn muốn loại bỏ các phần trùng lặp, có một cách rất đơn giản, đó là sử dụng cấu trúc Tập hợp dữ liệu do JavaScript cung cấp. Đó là một lớp lót:

const yourArrayWithoutDuplicates = [...new Set(yourArray)]

Để tìm phần tử nào là bản sao, bạn có thể sử dụng "mảng không có bản sao" mà chúng tôi đã có và xóa từng mục mà nó chứa khỏi nội dung mảng ban đầu:

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 ]

Một giải pháp khác là sắp xếp mảng, sau đó kiểm tra xem “mục tiếp theo” có giống với mục hiện tại không và đặt nó vào một mảng:

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 ]

Lưu ý rằng điều này chỉ hoạt động cho các giá trị nguyên thủy, không phải đối tượng. Trong trường hợp các đối tượng, bạn cần một cách để so sánh chúng.

Tải xuống miễn phí của tôiSổ tay dành cho Người mới bắt đầu JavaScript


Các hướng dẫn js khác: