Questo è probabilmente uno dei modi più veloci per rimuovere definitivamente i duplicati da un array
10 volte più veloce rispetto alla maggior parte delle funzioni qui. 78 volte più veloce in 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);
- Test: http://jsperf.com/wgu
- Demo: http://jsfiddle.net/46S7g/
- Altro: https://stackoverflow.com/a/25082874/2450730
se non riesci a leggere il codice sopra chiedi, leggi un libro javascript o qui ci sono alcune spiegazioni sul codice più breve. https://stackoverflow.com/a/21353032/2450730
EDIT
Come indicato nei commenti, questa funzione restituisce un array con univoci, tuttavia la domanda chiede di trovare i duplicati. in tal caso una semplice modifica a questa funzione consente di inserire i duplicati in un array, quindi l'utilizzo della funzione precedente toUnique
rimuove i duplicati dei duplicati.
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));