In JavaScript können Arrays mit dem Array -Konstruktor erstellt oder schnell mit [] erstellt werden, was auch die bevorzugte Methode ist. Das Array ist ein aus dem Objekt geerbter Prototyp, und es hat keinen speziellen Rückgabewert für TypeOF, es gibt nur 'Objekt' zurück.
1. Array.Prototype.Slice -Methode
Die Scheibenmethode eines Arrays wird normalerweise verwendet, um Fragmente aus einem Array zu extrahieren. Es hat jedoch auch die Fähigkeit, "Klassenarrays" (wie Argumente und HTMLCollection) in reale Arrays umzuwandeln.
Die Codekopie lautet wie folgt:
var nodesarr = array.prototype.slice.call (document.forms);
var argsarr = array.prototype.slice.call (Argumente);
Ich war neugierig, warum die Slice -Methode von Arrays eine solche Fähigkeit hat und wie sie in der JavaScript -Engine implementiert wird? Hat die brüderliche Methode des Slice solche Fähigkeiten?
Laden Sie mit Neugier den V8 JavaScript -Engine -Quellcode von Google in die Region herunter. Die Download -Adresse des V8 -Quellcodes lautet: https://github.com/v8/v8.
Finden Sie "Array.Prototype.Slice" in V8-Master/src/array.js:
Die Codekopie lautet wie folgt:
Funktion Arraysslice (Start, Ende) {
Check_object_coercible (this, "array.prototype.slice");
...
var result = []; // Dieser Satz ist der Schlüssel
if (end_i <start_i) Rückgabeergebnis;
if (useParsevariant (Array, len, is_array (array), end_i - start_i)) {
...
SparSlice (Array, start_i, end_i - start_i, len, result);
} anders {
SimpleSlice (Array, start_i, end_i - start_i, len, result);
}
...
Rückgabeergebnis;
Dann denke ich, dass die SimpleSlice -Methode, die "Klassenarray" aufruft, verwendet werden sollte, und dann nach "SimpleSlice" im Quellcode gesucht und festgestellt wurde, dass die Simplice -Methode auch im Quellcode von Array.Prototype.SPLICE aufgerufen wird und die Ergebnisvariable auch in ein leeres Array initialisiert wird. Wenn Sie jedoch die Spleißmethode verwenden möchten, um "Klassenarray" in ein reales Array umzuwandeln, müssen Sie den Startpositionsparameter auf 0 übergeben, dh:
Die Codekopie lautet wie folgt:
var nodesarr = array.prototype.spleplice.call (document.forms, 0);
Weil sein Implementierungsprinzip darin besteht, ein neues Array durch gelöschte Array -Elemente zu bilden. Wenn Sie interessiert sind, können Sie die Quellcode -Implementierung von Array.Prototype.SPLICE überprüfen.
Außerdem kann Slice auch ein Array klonen:
Die Codekopie lautet wie folgt:
var arr = [1, 2, 3];
var klonearr = arr.slice (); // Clonearr: [1, 2, 3]
2. Array.Prototype.push -Methode
Verwenden Sie die Push -Methode, um Arrays zusammenzuführen:
Die Codekopie lautet wie folgt:
var arr1 = [1, 'str', {name: 'lang'}];
var arr2 = [2, 'ing'];
Array.Prototype.push.Apply (arr1, arr2);
// Rückgabeergebnis: [1, "str", {Name: 'Lang'}, 2, "ing"]
3.. Array.Prototype.Sort -Methode
Laden Sie zuerst den Code hoch:
Die Codekopie lautet wie folgt:
var arr = ['1', '2', '10', '12'];
arr.sort ();
// Rückgabeergebnis: ["1", "10", "12", "2"]
Die obigen Ergebnisse sind normalerweise nicht das, was wir wollen. Wie sortieren wir also nach numerischer Größe:
Die Codekopie lautet wie folgt:
arr.sort (Funktion (a, b) {
Rückkehr a - b;
})
// Rückgabeergebnis: ["1", "2", "10", "12"]
Mit der Sortiervergleichsfunktion können Sie viele Komparatoren an die Erzielung einer personalisierten Sortierung anpassen.
4. Längenattribut
Das Längenattribut eines Arrays ist nicht schreibgeschützt, was bedeutet, dass es geschrieben werden kann. Verwenden Sie beispielsweise das Längenattribut, um das Array abzuschneiden:
Die Codekopie lautet wie folgt:
var arr = [1, 2, 3, 4];
arr.length = 2;
// arr: [1, 2]
arr.length = 0;
// arr: []
Gleichzeitig erhöht sich der Längenwert des Arrays, wenn das Längenattribut erhöht wird, und undefined wird als neues Element zum Füllen verwendet.
Die Codekopie lautet wie folgt:
var arr = [];
Arr.Length = 3;
// arr: [undefiniert, undefiniert, undefiniert]
Okay, lass uns diesen Tag beenden. Es ist schon am frühen Morgen. Wenn Sie in Zukunft neue Entdeckungen haben, werden Sie es hier anhängen.
Vorher hatte ich keine Angewohnheit, Blogs zu schreiben, aber ich war es nur daran gewöhnt, meine übliche Zusammenfassung in YouDaoyuns Notizen zu setzen. Ich hatte nicht erwartet, dass es einige Gedanken dauert, um meine Ansichten auszuschreiben, weil ich überlegen musste, wie ich es ausdrücken sollte, damit andere es besser verstehen können.
Wenn Sie einen falschen Ausdruck oder ein falsches Verständnis haben, hoffe ich, dass jeder Ihnen helfen kann, mich zu korrigieren.
Auch einige häufig verwendete JavaScript -Array -Methoden angeschlossen
concat () verkettet zwei oder mehr Arrays und gibt das Ergebnis zurück.
Join () steckt alle Elemente des Arrays in eine Zeichenfolge. Elemente werden durch angegebene Grenzwerte getrennt.
pop () löscht und gibt das letzte Element des Arrays zurück und gibt zurück
Push () fügt ein oder mehrere Elemente am Ende des Arrays hinzu und gibt die neue Länge zurück.
Reverse () reverse () kehrt die Reihenfolge der Elemente im Array um.
Shift () löscht und gibt das erste Element des Arrays zurück und gibt zurück
Slice () gibt das ausgewählte Element aus einem vorhandenen Array zurück
sort () sortiert die Elemente des Arrays
Splice () löscht das Element und fügt dem Array neue Elemente hinzu.
tosource () gibt den Quellcode des Objekts zurück
toString () wandelt das Array in eine Zeichenfolge um und gibt das Ergebnis zurück.
Tolocalestring () wandelt das Array in ein lokales Array um und gibt das Ergebnis zurück.
Unshift () fügt dem Beginn des Arrays ein oder mehrere Elemente hinzu und gibt eine neue Länge zurück.
ValueOf () gibt den ursprünglichen Wert des Array -Objekts zurück