Implementierungsidee: Erstellen Sie ein neues Array, durchlaufen Sie das eingehende Array und fügen Sie den Wert hinzu, wenn er nicht im neuen Array enthalten ist. Hinweis: Die Methode „indexOf“ bestimmt, ob der Wert im Array vorhanden ist ECMAScript5-Methode, die unter IE8 nicht verfügbar ist. Wird unterstützt, müssen Sie mehr Code schreiben, der mit Browsern niedrigerer Versionen kompatibel ist:
// Die einfachste Array-Deduplizierungsmethode
function unique1( array){
var n = [] ; //Ein neues temporäres Array
//Das aktuelle Array durchlaufen
for(var i = 0; i < array.length; i ){
//Wenn das i-te des aktuellen Arrays gespeichert wurde Temporäres Array, dann überspringen,
// Andernfalls das aktuelle Element in das temporäre Array verschieben
if (n.indexOf(array[i]) == -1) n.push(array[i]) ;
}
return n;
}
Objekt-Schlüssel-Wert-Paar-Methode
Implementierungsidee : Erstellen Sie ein neues JS-Objekt und ein neues Array und durchlaufen Sie das eingehende Array. Bestimmen Sie, ob der Wert der Schlüssel des JS-Objekts ist. Wenn nicht, fügen Sie den Schlüssel zum Objekt hinzu und fügen Sie ihn in ein neues Array ein. Hinweis: Bei der Feststellung, ob es sich um einen js-Objektschlüssel handelt, wird „toString()“ automatisch für den eingehenden Schlüssel ausgeführt. Verschiedene Schlüssel können mit demselben verwechselt werden, zum Beispiel: a[1], a[„1“]. Um das obige Problem zu lösen, müssen Sie noch „indexOf“ aufrufen.
// Am schnellsten und nimmt den meisten Platz ein (Raum wird gegen Zeit ausgetauscht)
function unique2(array){
var n = {}, r = [], len = array. length, val , type;
for (var i = 0; i < array.length; i ) {
val = array[i];
type = typeof val;
if (! n[val ]) {
n[val] = [type];
r.push(val);
} else if (n[val].indexOf(type) < 0) {
n [val].push(type);
r.push(val);
}
}
return r;
}
Array Indexbeurteilungsmethode
Implementierungsidee: Wenn das i-te Element des aktuellen Arrays zum ersten Mal an einer anderen Position als i im aktuellen Array erscheint, bedeutet dies, dass das i-te Element wiederholt und ignoriert wird. Andernfalls speichern Sie das Ergebnisarray.
function unique3(array){
var n = [array[0]]; //Ergebnisarray
//Durchlauf ab dem zweiten Element
for(var i = 1; i < array.length; i ) {
//Wenn das i-te Element des aktuellen Arrays zuerst an einer anderen Position als i im aktuellen Array erscheint,
//dann bedeutet dies, dass das i- Das Element wird wiederholt. Ignorieren Sie „Verlieren“. Andernfalls speichern Sie das Ergebnisarray
if (array.indexOf(array[i]) == i) n.push(array[i]);
}
return n;
}
Angrenzende Entfernungsmethode nach dem Sortieren
Implementierungsidee: Sortieren Sie das eingehende Array, die gleichen Werte sind nach dem Sortieren benachbart, und fügen Sie dann beim Durchlaufen nur Werte hinzu, die keine Duplikate sind des vorherigen Werts in das neue Array.
// Platzieren Sie dieselben Werte nebeneinander und durchlaufen Sie sie dann, um doppelte Werte zu entfernen
function unique4(array){
array.sort(
var re=[array[0]] ;
for(var i = 1; i < array.length; i ){
if(array[i] !== re[re.length-1])
{
re .push(array[i]);
}
}
return re;
}
Array-Traversal-Methode optimieren
Implementierungsideen: Get Der Wert ganz rechts ohne Duplikate wird in das neue Array eingefügt. (Wenn doppelte Werte erkannt werden, wird die aktuelle Schleife beendet und die nächste Beurteilungsrunde der Schleife der obersten Ebene beginnt)
// Idee: Holen Sie sich den Wert ganz rechts ohne Duplizierung und fügen Sie ihn in ein neues Array ein
function unique5(array){
var r = [];
for(var i = 0, l = array .length; i < l; i ) {
for(var j = i 1; j < l; j )
if (array[i] === array[j]) j = i ;
r.push(array[i]);
}
return r;
}