Array-Deduplizierung. Die allgemeine Anforderung besteht darin, Ihnen ein Array zu geben, die Deduplizierungsmethode aufzurufen und eine Kopie des Werts zurückzugeben. Die Kopie enthält keine doppelten Elemente. Im Folgenden stellt Ihnen der Herausgeber von Script House eine Vielzahl von Methoden zum Entfernen von Duplikaten aus JS-Arrays vor. Freunde, die sie benötigen, können sich auf
Array-Deduplizierung beziehen und die Deduplizierungsmethode aufrufen, gibt eine Kopie des Werts ohne doppelte Elemente in der Kopie zurück. Im Allgemeinen werden zwei Elemente, die durch den ===-Vergleich „true“ zurückgeben, als dasselbe Element betrachtet und müssen dedupliziert werden. Daher sind 1 und „1“ unterschiedliche Elemente, und 1 und die neue Zahl (1) sind unterschiedliche Elemente. } und {} sind unterschiedliche Elemente (unterschiedliche Referenzen). (Wenn die Anforderung natürlich davon ausgeht, dass {} und {} als dieselben Elemente gezählt werden, ist die Lösung natürlich unterschiedlich.)
Methode 1
Doppelschleife verwenden
function unique(arr) { var res = []; for(var i = 0, len = arr.length;i < len; i++) { var item = arr[i]; for(var j = 0, jLen = res.length; j<jLen; j++) { if(item == res[j]) break; } if(j == jLen) res.push(item); } return res; }
Methode 2
function unique(arr) { var ret = [] for (var i = 0; i < arr.length; i++) { var item = arr[i] if (ret.indexOf(item) === -1) { ret.push(item) } } return ret }
Sie können einen Syntaxzucker
function unique(arr) { var res = []; for(var i = 0, len = arr.length;i < len; i++) { var item = arr[i]; (res.indexOf(item) === -1) && res.push(item); } return res; }
verwenden, aber in Browsern niedrigerer Versionen gibt es keinen indexOf
var indexOf = [].indexOf ? function(arr, item) { return arr.indexOf(item) } : function indexOf(arr, item) { for (var i = 0; i < arr.length; i++) { if (arr[i] === item) { return i } } return -1 } function unique(arr) { var ret = [] for (var i = 0; i < arr.length; i++) { var item = arr[i] if (indexOf(ret, item) === -1) { ret.push(item) } } return ret }
Methode3
Eine weitere Vergleichsmethode mit Doppelschleifen. Die vorherige besteht darin, die Elemente von zu kombinieren Original-Array und das Ergebnis Vergleichen Sie die Arrays einzeln. Als nächstes können wir das letzte Element der wiederholten Elemente des Original-Arrays in das Array einfügen
function unique(arr) { var ret = []; var len = arr.length; var isRepeat; for(var i=0; i<len; i++) { isRepeat = false; for(var j=i+1; j<len; j++) { if(arr[i] === arr[j]){ isRepeat = true; break; } } if(!isRepeat){ ret.push(arr[i]); } } return ret; }
Hier ist eine optimierte Version
function unique(a) { var res = []; for (var i = 0, len = a.length; i < len; i++) { for (var j = i + 1; j < len; j++) { // 这一步十分巧妙 // 如果发现相同元素 // 则 i 自增进入下一个循环比较 if (a[i] === a[j]) j = ++i; //j = i = i + 1; } res.push(a[i]); } return res; }
Methode4
Verwenden Sie das Objektobjekt in Javascript als Hash Tabelle
function dedup(arr) { var hashTable = {}; return arr.filter(function(value,index,arr){ var key = JSON.stringify(value); var match = Boolean(hashTable[key]); return (match ? false : hashTable[key] = true); }); }
Da die Schlüsselwerte von Object alle String-Typen sind, können 1 und „1“ nicht unterschieden werden Speichern Sie den Typ im Schlüssel
function dedup(arr) { var ret = []; var hash = {}; for(var i = 0; i < arr.length; i++) { var item = arr[i]; var key = typeof(item) + item; if(hash[key] !== 1) { ret.push(item) hash[key] = 1; } } return ret; }
Zusammenfassung
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung von vier Methoden zum Entfernen von Duplikaten aus JavaScript-Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!