1. Lernen Sie Arrays kennen
Ein Array ist eine Sammlung bestimmter Datentypen. Der Datentyp kann eine Ganzzahl, eine Zeichenfolge oder sogar ein Objekt sein.
Javascript unterstützt keine mehrdimensionalen Arrays. Da Arrays jedoch Objekte enthalten können (ein Array ist auch ein Objekt), können Arrays durch gegenseitige Verschachtelung ähnliche Funktionen wie mehrdimensionale Arrays erreichen.
1.1 Array definieren
Deklarieren Sie ein Array mit 10 Elementen:
var a = new Array(10);
Zu diesem Zeitpunkt wurde der Speicherplatz für a geöffnet, der 10 Elemente enthält. Verwenden Sie den Array-Namen plus [Index], um ihn aufzurufen, z. B. a[2], aber das Element wurde zu diesem Zeitpunkt noch nicht initialisiert. Der Aufruf wird undefiniert zurückgeben.
Der folgende Code definiert ein Variablenarray und weist Werte zu.
var a = new Array();
a [0] = 10;
a[1] = "aaa";
a[2] = 12,6;
Wie oben erwähnt, können Objekte in Arrays platziert werden, zum Beispiel der folgende Code:
var a = new Array();
a[0] = true;
a[1] = document.getElementById("text");
a[2] = { x:11, y:22};
a[3] = new Array();
Arrays können bei der Instanziierung auch direkt Werte zugewiesen werden, zum Beispiel:
var a = new Array(1, 2, 3, 4, 5);
var b = [1, 2, 3, 4, 5];
a und b sind beide Arrays, aber b verwendet eine implizite Deklaration, um eine weitere Instanz zu erstellen. Wenn zu diesem Zeitpunkt Alert(a==b) verwendet wird, wird false
angezeigt
1.2 Mehrdimensionales Array
Tatsächlich unterstützt Javascript keine mehrdimensionalen Arrays. In ASP können Sie dim a(10,3) verwenden, um mehrdimensionale Arrays zu definieren, wenn Sie var a = new Array(10,3) verwenden. , wird ein Fehler gemeldet
Aber wie bereits erwähnt, können Arrays Objekte enthalten, sodass Sie ein Element im Array als Array deklarieren können, zum Beispiel:
var a = new Array();
a [0] = new Array();
a[0][0] = 1;
alert(a[0][0]); //Pop up 1
Anweisung Beim Zuweisen
var a = neues Array([1, 2,3], [4,5,6],[7,8,9]);
var b = [[1,2,3], [4,5,6] , [7,8, 9]];
Der Effekt ist derselbe: a verwendet eine reguläre Instanziierung, b ist eine implizite Deklaration und das Ergebnis ist ein mehrdimensionales Array.
1.3 Array-Literale
Ich weiß wirklich nicht, wie das auf Chinesisch heißt, Textarray?
Apropos Arrays: Arrays sind eigentlich spezielle Objekte. Werte und Aufrufe werden über Objektname.property, object.method() und Arrays abgerufen Array-Literale sind in vielerlei Hinsicht mit Arrays vergleichbar. Ihre Deklaration und ihr Aufruf unterscheiden sich jedoch grundlegend von Arrays >
var aa = new Object();
aa .x = "cat";
aa.y = "sunny";
alert(aa.x); //Pop up cat
Erstellen Sie ein einfaches Objekt, wenn es als Array-Literal verwendet wird. Wenn Sie „alert(aa["x"]) verwenden, wird auch cat
angezeigt
var a = {x: "cat" , y: "sunny"};
alert(a["y"]); //pop up sunny
Dies ist eine andere Möglichkeit, ein Objekt zu erstellen, das Ergebnis ist das gleiche
2. Betrieb von Array-Elementen
Wie oben erwähnt, können Sie Elemente über das Array [Index] lesen und schreiben.
Der Bereich des Indexes ist 0 – (23 (hochgestellt 2) -1), und der Index ist eine negative Zahl, Gleitkomma oder Selbst bei einem booleschen Wert wird das Array automatisch in den Objekttyp konvertiert, zum Beispiel:
var b = new Array();
b[2.2] = "XXXXX";
alert(b[2.2]); //-> >
Dies entspricht b["2.2"] = "XXXXX".
2.1 Array-Schleife
var a = [1,2,3,4,5,6];
for(var i =0; i
alert(a[i]);
}
Dies ist die am häufigsten verwendete Variante. Beim Durchlaufen des Arrays wird der Code 1 bis 6 nacheinander angezeigt.
Es gibt eine weitere häufig verwendete Variante:
var a = [1,2,3,4,5 ,6];
for(var e in a){
alert(e);
}
Erscheint immer noch 1 bis 6 in der Reihenfolge, in der es sich um ein Traversalobjekt handelt (Array ist ein spezielles Objekt). Da das Array keinen Attributnamen hat, wird der Wert direkt ausgegeben . Diese Strukturanweisung wird für das Objekt verwendet. Zum Beispiel:
var a = {x:1,y :2,z:3};
for(var e in a){
alert(e ":" a[e]);
}
Zu diesem Zeitpunkt erhält e den Attributnamen, d. h. x, y, x, und um den Wert zu erhalten, wird der Array-Name [Attribut] verwendet, sodass a[e] äquivalent zu a["x" ist. ], a[" y“], a["z"]
2.2 Allgemeine Array-Funktionen
concat
Hängt ein Array nach dem vorhandenen Array an und gibt das neue Array zurück, ohne das vorhandene Array zu beeinflussen:
var a = [123];
var b = "sunnycat";
var c = ["www",21,"ido"];
var d = {x:3.14, y:"SK"};
var e = [1, 2,3,4,[5,6,[7,8]]];
alert(a.concat(b)); // -> (a) ; // - -> 123
alert(b.concat(c, d)); // -> )); / / -> www,21,ido,sunnycat
alert(e.concat(11,22,33).join(" # ")); 4 # 5, 6,7,8 # 11 # 22 # 33
Es ist zu beachten, dass es nur für Arrays oder Strings verwendet werden kann, wenn es sich bei der Verbindung (das vorherige a) um einen numerischen Wert, einen booleschen Wert oder ein Objekt handelt, wird ein Fehler gemeldet, wenn ein String mit einem verbunden wird Auf die Zeichenfolge folgt das erste Element des Arrays, das in neue Elemente gespleißt wird, während die Array-Verbindungszeichenfolge neue Elemente anhängt (ich kenne den Grund dafür nicht, geben Sie ihn bitte an, wenn Sie ihn kennen). Arrays und Objekte bleiben nach der Verbindung intakt.
beitreten
Verketten Sie die Arrays mit angegebenen Trennzeichen und konvertieren Sie die Arrays in Zeichenfolgen:
lert(a.join( "," )); // -> a,b,c,d,e,f,g sind äquivalent zu a.toString()
alert(a.join(" x ")); > a x b x c x d x e x f x g
Dies ist leicht zu verstehen, es sollte jedoch beachtet werden, dass nur eindimensionale Arrays konvertiert werden. Wenn das Array Arrays enthält, wird nicht die durch Join angegebene Zeichenfolgenverbindung verwendet, sondern die Standardeinstellung toString() verwendet, wie zum Beispiel
alert(a.join(" * ")); > a * b * c * d * e * f * g * 11,22,33
Hinweis: Das Array innerhalb des Arrays wird nicht für *-Verbindungen verwendet
Pop
Löschen Sie das letzte Element des Arrays und geben Sie das Element zurück
var a = ["aa", "bb", "cc"];
document.write(a.pop()); // -> ); // -> aa, bb
Hinweis: Wenn das Array leer ist, wird undefiniert zurückgegeben
drücken
Fügen Sie am Ende des Arrays ein Array hinzu und geben Sie die neue Länge des Arrays zurück
var a = ["aa"," bb", "cc"];
document.write(a.push("dd")); // -> 4
document.write(a); // -> aa,bb, cc,dd
document.write(a.push([1,2,3])); // -> ,dd, 1,2,3
Der Unterschied zu concat besteht darin, dass concat das ursprüngliche Array nicht beeinflusst und direkt ein neues Array zurückgibt, während push das ursprüngliche Array direkt ändert und die neue Länge des Arrays zurückgibt
sortieren
Array-Sortierung, schauen wir uns zuerst ein Beispiel an
var a = [11,2,3,33445,5654,654,"asd",b"];
alert(a.sort()); ,33445,5654, 654,asd,b
Ist das Ergebnis nicht überraschend? Ja, die Sortierung erfolgt nicht nach Ganzzahlgröße, sondern nach dem Vergleich des ersten Zeichens. das zweite Zeichen wird genommen und dann Verhältnis, wenn Sie anhand ganzzahliger Werte vergleichen möchten, können Sie dies tun
var a = [11,2,3 ,33445, 5654,654];
a.sort(function(a,b) {
return a - b;
});
alert(a); // -> ,3, 11,654,5654,33445
Die sort()-Methode verfügt über einen optionalen Parameter, der die Funktion im Code darstellt. Nicht-Zahlen können nicht mehr sortiert werden, daher werde ich hier nicht näher darauf eingehen
umgekehrt
Die umgekehrte Sortierung des Arrays ist dasselbe wie sort(), wobei der ASCII-Wert des ersten Zeichens zum Vergleich verwendet wird
var a = [11,3,5,66,4];
alert(a.reverse()); ,5,3 ,11
Wenn das Array auch ein Array enthält, wird es als Objekt behandelt und die Elemente werden nicht extrahiert
var a = ['a','b','c','d','e','f','g',[4,11 ,33] ];
alert(a.reverse()); // -> 4,11,33,g,f,e,d,c,b,a
alert(a.join( " * " )); // -> 4,11,33 * g * f * e * d * c * b * a
Logischerweise sollte es am Ende von Zeile 11 stehen, da 4, 11, 33 hier als vollständige Objekte verglichen werden und daher an erster Stelle stehen. Wenn Sie es nicht verstehen, verwenden Sie join(), um sie aneinanderzureihen zusammen, und es wird viel klarer sein
Schicht
Löschen Sie das erste Element des Arrays und geben Sie das Element zurück, das Pop ähnelt
var a = ["aa","bb","cc"];
document.write(a.shift()); >document.write( a); // -> bb,cc
Hinweis: Wenn das Array leer ist, wird undefiniert zurückgegeben
Schaltung ausschalten
Im Gegensatz zur Verschiebung fügen Sie Elemente an der Vorderseite des Arrays hinzu und geben die neue Länge des Arrays zurück
Code kopieren
Der Code lautet wie folgt:
var a = ["aa","bb","cc"];
document.write(a.unshift(11)); Gibt undefiniert im IE zurück
document.write(a); // -> 11,aa,bb,cc
document.write(a.unshift([11,22])); document.write(a); // -> 11,22,11,aa,bb,cc
document.write(a.unshift("cat")); .write(a); // -> cat,11,22,11,aa,bb,cc
Beachten Sie, dass diese Methode unter IE undefiniert zurückgibt. Es scheint ein Microsoft-Fehler zu sein. Ich kann die neue Länge des Arrays unter Firefox korrekt verwenden
Scheibe
Array-Fragment zurückgeben
alert(a.slice(1,2)); // -> a.slice (2)); // -> c,d,e,galert(a.slice(-4)); // -> >alert( a.slice(-2,-6)); // -> Empty
a.slice(1,2), die Zahl von Index 1 bis Index 2, beachten Sie, dass das Element mit Index 2 nicht enthalten ist
Wenn nur ein Parameter vorhanden ist, wird standardmäßig der letzte
verwendet -4 des Arrays stellt das 4. Element von unten dar, daher werden die vier Elemente von unten zurückgegeben.
Da die letzte Zeile ab dem 2. von unten beginnt, ist es offensichtlich, dass die vorherigen Elemente vorhanden sind kann nicht abgerufen werden, daher wird ein leeres Array zurückgegeben. Wenn es in a.slice(-6,-2) geändert wird, wird b,c,d,e zurückgegeben
Spleiß
Löschen Sie ein Element eines Fragments aus dem Array und geben Sie das gelöschte Element zurück
Code kopieren
Der Code lautet wie folgt:var a = [1,2,3 ,4, 5,6,7,8,9];document.write(a.splice(3,2)); // -> / -> ; 1,2,3,6,7,8,9document.write(a.splice(4)); // -> 🎜>Dokument wird zurückgegeben. // -> .write(a); // -> 2,3,6
document.write(a.splice(1,1,["aa","bb","cc"])); > 3 document.write(a); // -> 2,aa,bb,cc,6,7,8,9
document.write(1,2,"ee ").join(" #")); // -> aa,bb,cc#6
document.write(a); // -> 2,ee,7,8,9
document.write(a. splice(1,2,"cc","aa","tt").join("#")); ; // -> 2,cc,aa,tt,8,9
Beachten Sie, dass der zweite Parameter dieser Methode im IE erforderlich ist. Wenn er nicht ausgefüllt ist, wird er standardmäßig auf 0 gesetzt, z. B. a.splice(4), und der Effekt entspricht a. splice(4,0 )
toString
Arrays in Strings konvertieren, sondern alle Objekte können diese Methode verwenden
Code kopieren Der Code lautet wie folgt :
var a = [5,6,7,8,9,["A","BB"],100];
Der boolesche Wert gibt „true“ oder „false“ zurück, das Objekt gibt [Objekt-Objektname] zurück
Im Vergleich zur Methode „join()“ ersetzt „join()“ nur ein eindimensionales Array, während „toString()“ das gesamte Array ersetzt (unabhängig von der eindimensionalen). Array).Dimensional oder mehrdimensional) völlig flach
Gleichzeitig kann diese Methode für die Dezimal-, Binär-, Oktal- und Hexadezimalkonvertierung verwendet werden, zum Beispiel:
Code kopieren
Der Code lautet wie folgt:
var a = [5,6,7,8,9,"A","BB" ,100];
for(var i=0; i
document.write(a[i].toString() " Das Binärsystem ist " a[i].toString (2) " und das Oktalsystem ist " a[i].toString(8) ", hexadezimal ist " a[i].toString(16)); // ->
Ausgabeergebnis:
Die Binärdatei von 5 ist 101, das Oktalsystem ist 5, das Hexadezimalsystem ist 5
Das Binärsystem von 6 ist 110, das Oktalsystem ist 6, das Hexadezimalsystem ist 6
Das Binärsystem von 7 ist 111, das Oktal System ist 7 und das Hexadezimalsystem ist 7
Das Binärsystem von 8 ist 1000, das Oktalsystem ist 10 und das Hexadezimalsystem ist 8. Das Binärsystem von
9 ist 1001, das Oktalsystem ist 11 und das Hexadezimalsystem ist 9. Das Binärsystem von A
A ist A, das Oktalsystem ist A und das Dezimalsystem ist A. Hexadezimal ist A
BB, Binär ist BB, Oktal ist BB und Hexadezimal ist BB
100 ist 1100100 im Binärformat, Oktal ist 144 und Hexadezimal ist 64
Die Konvertierung kann nur für Elemente durchgeführt werden. Wenn das gesamte Array konvertiert wird, wird das Array unverändert zurückgegeben
toLocaleString
Gibt eine lokale Formatzeichenfolge zurück, die hauptsächlich für Datumsobjekte verwendet wird
var a = new Date();
document .write(a.toString()); // -> Sa 8. August 17:28:36 UTC 0800 , 2009 Datum 17:28:36
document.write(a.toLocaleDateString()); // ->
Der Unterschied besteht darin, dass toString() das Standardformat zurückgibt und toLocaleString() das vollständige Datum im lokalen Format zurückgibt (in [Systemsteuerung]>>[Regional- und Sprachoptionen], durch Ändern der [Zeit] und [Long Date]-Formate) ist toLocaleDateString() dasselbe wie toLocaleString(), benötigt aber weniger Zeit
valueOf
Gibt je nach Objekt unterschiedliche Originalwerte zurück. Bei Verwendung für die Ausgabe ähnelt es toString(), aber toString() gibt den String-Typ zurück, während valueOf() den ursprünglichen Objekttyp zurückgibt
Code kopieren
var c = true;var d = function(){
Alert(" sunnycat");
};
document.write(a.valueOf()); // -> >document.write(typeof (a.valueOf())); // -> object
document.write(b.valueOf()); b.valueOf ())); // -> number
document.write(c.valueOf())); ; // -> boolean
document.write(d.valueOf()); // -> function () { warning("sunnycat"); ()) ); // -> Funktion
Arrays sind auch Objekte, daher gibt typeof (a.valueOf()) ein Objekt zurück, das immer noch ein mehrdimensionales Array ist
Code kopieren Der Code lautet wie folgt:
Das Date-Objekt gibt die Anzahl der Millisekunden seit dem 1. Januar 1970 zurück. Die Math- und Error-Objekte verfügen nicht über die Methode valueOf.