Heim >Web-Frontend >js-Tutorial >Erweiterung und Reparatur von Arrays von Lesenotizen im Javascript-Framework-Design_Javascript-Fähigkeiten
1.indexOf- und lastIndexOf-Methoden:
Da IE7 einen Fehler meldet, wenn indexOf für ein Array-Objekt verwendet wird, muss es aus Kompatibilitätsgründen neu geschrieben werden.
2. Shuffle-Methode: Mischen Sie das Array.
3. Abflachen von Arrays: Abflachen, Rückgabe eines eindimensionalen Arrays
4.Einzigartige Methode: Deduplizierungsvorgang für Array
Interviewer fragen am häufigsten nach dieser Methode, da es viele Implementierungsmethoden gibt, die häufigste sind zwei for-Schleifen. Am bekanntesten ist die Verwendung eines Objekts a und dann eines for-Schleifenarrays arr. Jedes Mal, wenn (a[arr[i]]) existiert, wird es in Ihr neu definiertes Array-Ergebnis verschoben, wenn es nicht existiert . Die Existenz wird bewiesen und wiederholt, es besteht also keine Notwendigkeit, sie auf das Ergebnis zu drängen. In diesem Schema werden „123“ und 123 als gleich betrachtet. Tatsächlich ist das eine eine Zeichenfolge und das andere eine Zahl, daher sollten sie nicht als gleich betrachtet werden.
Die folgende Methode erscheint also: [1, „1“, „1“]
//Bestimmen Sie zunächst, ob die Typen gleich sind. Wenn sie gleich sind, speichern Sie sie. Wenn sie gleich sind, beweist dies, dass der Wert bereits vorhanden ist vor.
Wenn die Typen nicht identisch sind, gibt es zwei Situationen,
Im ersten Fall hat obj diese Daten bereits gespeichert, zum Beispiel: obj[123] = 123, jetzt array[i] = „123“, zu diesem Zeitpunkt ist der Typ von obj[array[i]]). eine Zahl und typeof array[i] ist eine Zeichenfolge, daher wird sie im Array gespeichert.
Die zweite Situation ist, dass obj diese Daten nicht gespeichert hat, zum Beispiel: array[i] = „123“, obj[“123“] = undefind, dann ist typeof obj[array[i]]) typeof undefined = undefiniert, ungleich typeof array[i], wird im Array gespeichert.
Diese Methode kann den Fall lösen, in dem Zeichenfolgen und Zahlen gleich sind, sie kann jedoch nicht den Fall lösen, in dem die Objekte gleich sind. Zum Beispiel: a = {1:2}, b ={2:1};
Beim ersten Durchlauf der Schleife ist typeof obj[a] = undefiniert, typeof a = Object. Speichern Sie obj[a] = a. Tatsächlich ist es obj[Object] = a;
In der zweiten Schleife ist typeof obj[b] gleich typeof obj[Object], was eigentlich typeof a = object, typeof b = object ist. Daher wird obj[array[i]] != array[ eingegeben. i]|, Das ist obj[b]->obj[Object]->a! = b, also Anzahlung
obj[b] = b; das heißt, obj[Object] = b; deckt das vorherige obj[Object] = a;
abIn diesem Fall wird für alle Objekte nur der letzte Objektwert gespeichert.
Wenn ich über Objekte nachdenke, verwende ich etwa Folgendes:
6.min gibt den Mindestwert des Arrays zurück: return Math.min.apply(0,array);
7.unshift gibt die Array-Länge unter IE6 und 7 nicht zurück.
Hier gibt es etwas zu beachten: