Heim > Backend-Entwicklung > PHP-Tutorial > Mehrere Methoden zum Entfernen von Duplikaten aus Javascript-Arrays

Mehrere Methoden zum Entfernen von Duplikaten aus Javascript-Arrays

巴扎黑
Freigeben: 2016-11-21 15:15:15
Original
825 Leute haben es durchsucht

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;
}


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage