1. Array-Traversal-Methode
Die einfachste Methode zum Entfernen von Duplikaten, Implementierungsidee: Erstellen Sie ein neues Array, durchlaufen Sie das eingehende Array und fügen Sie den Wert zum neuen Array hinzu, falls vorhanden ist nicht im neuen Array; Hinweis: Die Methode „indexOf“ zur Bestimmung, ob sich der Wert im Array befindet, wird unter IE8 nicht unterstützt. Sie müssen mehr Code schreiben, der mit Browsern niedrigerer Versionen kompatibel ist Der Quellcode lautet wie folgt:
// 最简单数组去重法 function unique1(array){ var n = []; //一个新的临时数组 //遍历当前数组 for(var i = 0; i < array.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(array[i]) == -1) n.push(array[i]); } return n; }
2. Objekt-Schlüssel-Wert-Paar-Methode
Diese Methode wird schneller ausgeführt als jede andere Methode, dauert aber Mehr Speicher schaffen: Erstellen Sie ein neues JS-Objekt und ein neues Array und durchlaufen Sie das übergebene 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 ein in das neue Array. 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.
// 速度最快, 占空间最多(空间换时间) 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; }
3. Array-Index-Beurteilungsmethode
Die Leistung ist ähnlich wie bei Methode 1. Implementierungsidee: Wenn das aktuelle Array das erste Vorkommen des i-ten Elements im aktuellen Array nicht i ist, bedeutet dies, dass das i-te Element ein Duplikat ist und ignoriert wird. Andernfalls speichern Sie das Ergebnisarray.
function unique3(array){ var n = [array[0]]; //结果数组 //从第二项开始遍历 for(var i = 1; i < array.length; i++) { //如果当前数组的第i项在当前数组中第一次出现的位置不是i, //那么表示第i项是重复的,忽略掉。否则存入结果数组 if (array.indexOf(array[i]) == i) n.push(array[i]); } return n; }
4. Angrenzende Entfernungsmethode nach dem Sortieren
Obwohl das Sortierergebnis der „Sort“-Methode des nativen Arrays nicht sehr zuverlässig ist, Dieser Mangel hat bei der auftragsorientierten Deduplizierung keine Auswirkungen. Implementierungsidee: Sortieren Sie das eingehende Array so, dass nach dem Sortieren dieselben Werte nebeneinander liegen, und fügen Sie dann beim Durchlaufen nur Werte zum neuen Array hinzu, die keine Duplikate des vorherigen Werts sind.
// 将相同的值相邻,然后遍历去除重复值 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; }
5. Optimieren Sie die Array-Traversal-Methode
Der Implementierungscode dieser Methode ist ziemlich cool: Holen Sie sich den Wert ganz rechts Duplizierung in ein neues Array. (Wenn doppelte Werte erkannt werden, beenden Sie die aktuelle Schleife und geben Sie die nächste Beurteilungsrunde in der Schleife der obersten Ebene ein.) Empfohlen
// 思路:获取没重复的最右一值放入新数组 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; }
zu Bestimmen Sie, ob der Browser indexOf, indexOf unterstützt. Die neue Methode von ecmaScript5 wird von IE8 oder niedriger nicht unterstützt (einschließlich IE8, IE8 unterstützt nur einen Teil von ecma5)
if (!Array.prototype.indexOf){ // 新增indexOf方法 Array.prototype.indexOf = function(item){ var result = -1, a_item = null; if (this.length == 0){ return result; } for(var i = 0, len = this.length; i < len; i++){ a_item = this[i]; if (a_item === item){ result = i; break; } } return result; } }
Das obige ist der detaillierte Inhalt vonMehrere Ideen und Zusammenfassung des Implementierungscodes zur Verwendung von Javascript zum Deduplizieren von Arrays. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!