Heim > Artikel > Web-Frontend > Gemeinsame Nutzung mehrerer Methoden zum Entfernen von Duplikaten aus JavaScript-Arrays
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 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 darin besteht, dass {} und {} als dieselben Elemente gelten, ist die Lösung natürlich unterschiedlich. In diesem Artikel werden Ihnen hauptsächlich mehrere Methoden zum Deduplizieren von JavaScript-Arrays vorgestellt.)
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 syntaktischen Zucker verwenden
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; }
In Browsern niedrigerer Versionen gibt es jedoch 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 des ursprünglichen Arrays und des Ergebnisarrays zu kombinieren Wenn wir sie einzeln vergleichen, können wir unten das letzte Element der wiederholten Elemente des ursprünglichen 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; }
Es gibt auch 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 Verbessern Sie es leicht. Speichern Sie auch 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; }
Verwandte Empfehlungen:
PHP-Methodencode zur Implementierung der Array-Deduplizierung
JS ist eine einfache Analyse von Methoden zur Erzielung einer Array-Deduplizierung
Das obige ist der detaillierte Inhalt vonGemeinsame Nutzung mehrerer Methoden zum Entfernen von Duplikaten aus JavaScript-Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!