Esta es probablemente una de las formas más rápidas de eliminar permanentemente los duplicados de una matriz
10 veces más rápido que la mayoría de las funciones aquí. Y 78 veces más rápido en 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);
- Prueba: http://jsperf.com/wgu
- Demostración: http://jsfiddle.net/46S7g/
- Más: https://stackoverflow.com/a/25082874/2450730
si no puede leer el código anterior, pregunte, lea un libro de JavaScript o aquí hay algunas explicaciones sobre el código más corto. https://stackoverflow.com/a/21353032/2450730
EDITAR
Como se indica en los comentarios, esta función devuelve una matriz con elementos únicos, sin embargo, la pregunta pide encontrar los duplicados. en ese caso, una simple modificación a esta función permite insertar los duplicados en una matriz, luego, al usar la función anterior, se toUnique
eliminan los duplicados de los duplicados.
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));