Đây có lẽ là một trong những cách nhanh nhất để loại bỏ vĩnh viễn các bản sao khỏi một mảng
nhanh gấp 10 lần so với hầu hết các chức năng ở đây. & Nhanh hơn 78 lần trong safari
function toUnique(a,b,c){//array,placeholder,placeholder
b=a.length;
while(c=--b)while(c--)a[b]!==a[c]||a.splice(c,1)
}
var array=[1,2,3,4,5,6,7,8,9,0,1,2,1];
toUnique(array);
console.log(array);
- Kiểm tra: http://jsperf.com/wgu
- Bản trình diễn: http://jsfiddle.net/46S7g/
- Thêm: https://stackoverflow.com/a/25082874/2450730
nếu bạn không thể đọc mã ở trên, hãy đọc một cuốn sách javascript hoặc đây là một số giải thích về mã ngắn hơn. https://stackoverflow.com/a/21353032/2450730
EDIT
Như đã nêu trong các bình luận, hàm này không trả về một mảng có dấu, tuy nhiên câu hỏi yêu cầu tìm các bản sao. trong trường hợp đó, một sửa đổi đơn giản cho hàm này cho phép đẩy các bản sao vào một mảng, sau đó sử dụng hàm trước đó toUnique
sẽ loại bỏ các bản sao của các bản sao.
function theDuplicates(a,b,c,d){//array,placeholder,placeholder
b=a.length,d=[];
while(c=--b)while(c--)a[b]!==a[c]||d.push(a.splice(c,1))
}
var array=[1,2,3,4,5,6,7,8,9,0,1,2,1];
toUnique(theDuplicates(array));