Essa é provavelmente a maneira mais rápida de remover permanentemente as duplicatas de uma matriz
10 vezes mais rápido que a maioria das funções aqui. & 78x mais rápido no 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);
- Teste: http://jsperf.com/wgu
- Demonstração: http://jsfiddle.net/46S7g/
- Mais: https://stackoverflow.com/a/25082874/2450730
se você não conseguir ler o código acima, pergunte, leia um livro em javascript ou aqui estão algumas explicações sobre códigos mais curtos. https://stackoverflow.com/a/21353032/2450730
EDITAR
Conforme declarado nos comentários, esta função retorna uma matriz com únicos, mas a pergunta pede para encontrar as duplicatas. nesse caso, uma simples modificação dessa função permite inserir as duplicatas em uma matriz e, em seguida, usar a função anterior toUnique
remove as duplicatas das duplicatas.
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));