Ich habe mich schon eine Weile auf das Vorstellungsgespräch vorbereitet, daher wurde der Blog schon lange nicht mehr aktualisiert, nachdem ich die grundlegenden Wissenspunkte überprüft habe, werde ich einige häufig gestellte Vorstellungsgesprächsfragen teilen:
Gehen Sie für einen schriftlichen Test zu einem normalen Internetunternehmen. Es besteht eine hohe Wahrscheinlichkeit, dass Sie bei Interviews auf Verwendung von Javascript zur Implementierung der Array-Deduplizierung stoßen: wie zum Beispiel: Meizu schriftliche Testfragen
In diesem Blogbeitrag werden fünf Arten der Implementierung der Array-Deduplizierung in der JS-Methode beschrieben und die Demo und der Quellcode angehängt.
Die einfachste Methode der Deduplizierung, Implementierungsidee: Erstellen Sie ein neues Array und durchlaufen Sie das eingehende Array Array, wenn der Wert nicht im neuen Array ist, fügen Sie ihn dem neuen Array hinzu Hinweise : Die Methode „indexOf“, um zu bestimmen, ob der Wert im Array ist, ist ein ECMAScript5 Methode, die von IE8 und niedriger nicht unterstützt wird. Sie müssen mehr Codes schreiben, die mit Browsern niedrigerer Versionen kompatibel sind. 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; }
// 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分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; } }
Wenn nicht, fügen Sie das neue Objekt zu den Objektschlüsseln hinzu und fügen Sie es 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. 3.
Sie müssen noch „indexOf“ aufrufen. Die Leistung ist ähnlich wie bei Methode 1.// 速度最快, 占空间最多(空间换时间) 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; }
4.
Obwohl die Sortierergebnisse der „Sort“-Methode nativer Arrays nicht sehr zuverlässig sind, hat dieser Mangel keine Auswirkungen auf die Deduplizierung, die nicht auf die Reihenfolge achtet.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; }
Optimierung der Array-Traversal-Methode
Der Implementierungscode dieser Methode ist ziemlich cool.// 将相同的值相邻,然后遍历去除重复值 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; }
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in 5 Beispielcodes für effiziente Algorithmen zum Löschen doppelter Elemente aus Arrays in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!