Dies ist wahrscheinlich einer der schnellsten Wege, um die Duplikate dauerhaft
zehnmal schneller aus einem Array zu entfernen als die meisten Funktionen hier. Und 78-mal schneller 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);
- Prüfung: http://jsperf.com/wgu
- Demo: http://jsfiddle.net/46S7g/
- Weitere Informationen : https://stackoverflow.com/a/25082874/2450730
Wenn Sie den obigen Code nicht lesen können, fragen Sie, lesen Sie ein Javascript-Buch oder hier finden Sie einige Erklärungen zu kürzerem Code. https://stackoverflow.com/a/21353032/2450730
BEARBEITEN
Wie in den Kommentaren angegeben, gibt diese Funktion ein Array mit Eindeutigkeiten zurück. Die Frage fragt jedoch nach den Duplikaten. In diesem Fall können Sie durch eine einfache Änderung dieser Funktion die Duplikate in ein Array verschieben. Mit der vorherigen Funktion werden toUnique
die Duplikate der Duplikate entfernt.
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));