1. Indexof- und LastIndexof -Methoden:
Da IE7 einen Fehler unter Verwendung von Indexof für ein Array -Objekt meldet, muss eine Kompatibilität umschreiben.
Die Codekopie lautet wie folgt:
Array.prototype.lastindexof (item, index) {
var n = this.length, i = (index == null || index> n-1)? n-1: index;
if (i <0) i = n+i;
für (; i> = 0; i--)
if (this [i] === item) // Consolidar -Beurteilung, Indexof, lastIndexof
kehre I zurück;
Return -1;
}
2. Shuffle -Methode: Mischen Sie das Array.
Die Codekopie lautet wie folgt:
Funktion Shuffle (Ziel) {
var i = target.length, j, temp;
für (; i> 0; j = parseInt (math.random () * i), x = target [-i], target [i] = target [j], target [j] = x) {}
// Unter der Annahme von Länge = 10, dann nach math.random ()*10-> [0,10), ParseInt, [0,9], wählen Sie zufällig eine aus und tauschen Sie ihn mit dem letzten Element im Array aus. Die zweite Schleife, [0,8], wechselt mit der vorletzten Laufzeit des Arrays.
Ziel zurückgeben;
}
3.. Abflacher Prozess des Arrays: Flachermessen, ein eindimensionales Array zurückgeben
Die Codekopie lautet wie folgt:
Funktion flacher (arr) {
var result = [];
arr.foreach (Funktion (Element) {
if (array.isArray (item)) result.concat (flacher (item));
sonst result.push (item);
});
Rückgabeergebnis;
}
4. Einzigartige Methode: Deduplizierungsbetrieb des Arrays
Diese Methode ist, nach der der Interviewer gerne fragt, da sie über mehrere Implementierungsmethoden verfügt, die beiden für Schleifen. Das häufigste, was ich kenne, ist, ein Objekt A und dann A für Loop Array arr zu verwenden. Jedes Mal, wenn (ein [arr [i]]) existiert und wenn es nicht existiert, wird es in Ihr neu definiertes Array -Ergebnis geschoben. Existenz beweist, wiederholt sich, sodass es nicht nötig ist, in das Ergebnis zu drücken. Diese Lösung für "123", 123, wird als gleich angesehen. In der Tat ist eine Zeichenfolge und der andere eine Zahl und sollte nicht als gleich betrachtet werden.
Die folgende Methode erscheint also: [1, "1", "1"]
Die Codekopie lautet wie folgt:
if ((typeof obj [array [i]])!
A.push (Array [i]);
obj [Array [i]] = Array [i];
}
// Bestimmen Sie zuerst, ob die Typen gleich sind. Wenn sie gleich sind, bestimmen Sie, ob ihre Werte gleich sind. Wenn sie nicht gleich sind, werden sie gerettet. Wenn sie gleich sind, werden sie beweisen, dass dieser Wert schon einmal existiert hat.
Wenn die Typen unterschiedlich sind, gibt es hier zwei Situationen.
Im ersten Fall hat OBJ diese Daten bereits zuvor gespeichert, zum Beispiel: OBJ [123] = 123, jetzt Array [i] = "123". Zu diesem Zeitpunkt ist typeof obj [Array [i]]) eine Zahl, und Typeof Array [i] ist eine Zeichenfolge, so dass sie im Array gespeichert ist.
Der zweite Fall ist, dass OBJ diese Daten noch nicht gespeichert hat, zum Beispiel: Array [i] = "123", OBJ ["123"] = undefiniert. Zu diesem Zeitpunkt ist typeof obj [array [i]]) typeof undefined = undefiniert, was nicht gleich Array [i] entspricht und im Array gespeichert ist.
Diese Methode kann die Situation lösen, in der Zeichenfolgen und Zahlen gleich sind, aber die Situation, in der Objekte gleich sind, nicht lösen. Zum Beispiel: a = {1: 2}, b = {2: 1};
Wenn die erste Schleife, typeof obj [a] = undefiniert, typeof a = Objekt. Depositing OBJ [a] = a. In der Tat, obj [Objekt] = a;
In der zweiten Schleife ist typeof obj [b] gleich dem typeof OBJ [Objekt], bei dem es sich tatsächlich um typeof a = Objekt handelt, typeof b = Objekt. Daher tritt in Obj [Array [i]]! = b, so deponiert
obj [b] = b; das heißt, obj [Objekt] = b; überschreibt das vorherige OBJ [Objekt] = A;
In diesem Fall werden alle Objekte angezeigt, und nur der letzte Objektwert wird gespeichert.
Bei der Betrachtung von Objekten verwende ich die folgende Methode:
Die Codekopie lautet wie folgt:
für (var i = 0; i <temp.length; i ++) {
für (var j = i+1; j <temp.length; j ++) {
if (temp [i] === temp [j]) {
temp.SPLICE (j, 1);
J--;
}
}
}
Temperatur zurückgeben;
5. Array -Sortierung: Sortiermethode. Wenn das Objekt, das Sie sortieren möchten, ein Objekt ist, können Sie eine Vergleiche (a, b) {if (a.age> b.age) return 1; sonst return -1;}, a.sort (vergleichen).
6.Min gibt den Mindestwert des Arrays zurück: Mathematik zurück.min.Apply (0, Array);
7. Unshift gibt die Arraylänge nicht unter IE6,7 zurück.
Die Codekopie lautet wie folgt:
if ([]. Unschuh (1)! Führen Sie die IF -Anweisung aus
{
var _unshift = array.prototype.unshift; // Funktionsentführung.
Array.prototype.unshift = function () {
_unshift.apply (this, Argumente);
Gibt diese Länge zurück;
}
}
8.SPLICE Im Fall eines Parameters beträgt der Standardparameter von IE8 und die folgenden Versionen 0, während andere Browser Arraylänge sind.
Die Codekopie lautet wie folgt:
if ([1,2,3] .SPLICE (1) .Length == 0) // IE8 und die folgenden Versionen sind gleich 0, und andere Versionen sind gleich 3, geben Sie ein, wenn
{
var _splice = array.Prototype.SPLICE;
Array.Prototype.SPLICE = Funktion (a) {
if (Argumente.length == 1) // Wenn es nur einen Parameter gibt
{
return _splice.call (this, a, this.Length);
}anders{
return _SPLICE.Apply (this, Argumente);
}
}
}
Diese Methode ändert die Optionen des Arrays. Drücken, Pop, Verschiebung und Entschicht des Arrays (diese Methoden ändern auch die Optionen des Arrays), um diese Methode zu implementieren.
Hier ist ein Ort, an dem Sie beachten können:
Die Codekopie lautet wie folgt:
var color = new Array ('rot', 'blau', 'gelb', 'schwarz');
var color2 = color.splice (2,0, 'braun', 'pink');
Alarm (Farbe); // rot, blau, braun, rosa, gelb, schwarz, auf der gelben Option, starten Sie den Vorgang, wenn das Löschen 0 ist, wird die zusätzliche Option vor gelb eingesetzt. Erinnern.
Bitte überprüfen Sie hier die Differenz zwischen Spleiß und Scheiben, Rückgabewert und deren Auswirkungen auf das ursprüngliche Array.
Das obige ist eine vereinfachte Version des Inhalts dieses Abschnitts. Obwohl es optimiert ist, sind die wichtigsten Punkte alle. Ich hoffe, es wird für alle hilfreich sein, wenn Sie diesen Abschnitt lesen.