1. Comprendre les tableaux
Un tableau est une collecte de certains types de données, et les types de données peuvent être des entiers, des chaînes ou même des objets.
JavaScript ne prend pas en charge les tableaux multidimensionnels, mais comme les tableaux peuvent contenir des objets (les tableaux sont également des objets), les tableaux peuvent atteindre des fonctions similaires aux tableaux multidimensionnels en se niant.
1.1 Définition d'un tableau
Déclarez un tableau avec 10 éléments:
La copie de code est la suivante: var a = nouveau tableau (10);
À l'heure actuelle, l'espace mémoire a été ouvert pour A, contenant 10 éléments, et appelé avec le nom du tableau plus [indice], par exemple, A [2], mais l'élément n'est pas initialisé pour le moment, et l'appel retournera indéfini.
Le code suivant définit un tableau de variables et attribue des valeurs.
La copie de code est la suivante:
var a = nouveau array ();
a [0] = 10;
a [1] = "aaa";
a [2] = 12,6;
Comme mentionné ci-dessus, les objets peuvent être placés dans le tableau, comme le code suivant:
La copie de code est la suivante:
var a = nouveau array ();
a [0] = true;
a [1] = document.getElementById ("texte");
a [2] = {x: 11, y: 22};
a [3] = nouveau array ();
Les tableaux peuvent également être attribués directement lorsqu'ils sont instanciés, par exemple:
La copie de code est la suivante:
var a = nouveau tableau (1, 2, 3, 4, 5);
var b = [1, 2, 3, 4, 5];
A et B sont tous deux des tableaux, mais B utilise une déclaration implicite et crée une autre instance. Pour le moment, si l'alerte (a == b) est utilisée, false sera apparue
1,2 tableau multidimensionnel
En fait, JavaScript ne prend pas en charge les tableaux multidimensionnels. Dans ASP, vous pouvez utiliser DIM A (10,3) pour définir des tableaux multidimensionnels. Dans JavaScript, si vous utilisez var a = nouveau tableau (10,3), vous signalerez une erreur.
Mais comme mentionné précédemment, un tableau peut contenir des objets, donc un élément dans le tableau peut être déclaré comme un tableau, par exemple:
La copie de code est la suivante:
var a = nouveau array ();
a [0] = nouveau array ();
a [0] [0] = 1;
alert (a [0] [0]); // pop 1
Attribuer une valeur à la déclaration
La copie de code est la suivante:
var a = nouveau tableau ([1,2,3], [4,5,6], [7,8,9]);
var b = [[1,2,3], [4,5,6], [7,8,9]];
Le même effet est que A utilise une instanciation conventionnelle, B est une déclaration implicite et le résultat est un tableau multidimensionnel.
1.3 Literals Array
Je ne sais vraiment pas comment cela s'appelle en chinois, des tableaux de texte?
En parlant de tableaux, nous devons parler de littéraux de tableaux. Les tableaux sont en fait des objets spéciaux. Les objets ont des propriétés et des méthodes uniques. Les valeurs et les appels sont obtenus via des noms d'objets, des attributs, des objets et des méthodes (), tandis que les tableaux utilisent des indices pour obtenir des valeurs. Les littéraux de tableau sont très similaires aux tableaux, et ce sont des collections de certains types de données. Cependant, les littéraux de la table sont fondamentalement un objet, les déclarations et les appels sont différents des tableaux:
La copie de code est la suivante:
var aa = nouveau objet ();
aa.x = "cat";
aa.y = "ensoleillé";
alerte (aa.x); // pop up chat
Créer un objet simple. L'appel général est via AA.X. S'il est traité comme des littéraux de tableau, le chat apparaîtra avec alerte (aa ["x"])
La copie de code est la suivante:
var a = {x: "cat", y: "sunny"};
alerte (a ["y"]); // Popt Up Sunny
C'est une autre façon de créer des objets, et le résultat est le même
2. Fonctionnement des éléments de tableau
Comme mentionné ci-dessus, les éléments peuvent être lus et écrits via le tableau [indice]
La plage des indices est de 0 (23 (SuperScript 2) -1). Lorsque les indices sont négatifs, de points flottants ou même de valeurs booléennes, le tableau sera automatiquement converti en type d'objet, par exemple:
La copie de code est la suivante:
var b = new Array ();
b [2.2] = "xxxxx";
alerte (b [2.2]); // -> xxxxx
À l'heure actuelle, il équivaut à b ["2.2"] = "xxxxx".
2.1 boucle de tableaux
La copie de code est la suivante:
var a = [1,2,3,4,5,6];
pour (var i = 0; i <a.length; i ++) {
alerte (a [i]);
}
Il s'agit de la plus couramment utilisée. Après avoir parcouru le tableau, le code apparaîtra à son tour de 1 à 6.
Il y en a un autre couramment utilisé:
La copie de code est la suivante:
var a = [1,2,3,4,5,6];
pour (var e dans a) {
alerte (e);
}
Ou apparaître de 1 à 6 tour à tour. Car ... in est un objet qui passe par l'objet (le tableau est un objet spécial) et est utilisé sur le tableau. Parce que le tableau n'a pas de nom d'attribut, la valeur est sortie directement. Cette instruction de structure est utilisée sur l'objet, par exemple:
La copie de code est la suivante:
var a = {x: 1, y: 2, z: 3};
pour (var e dans a) {
alert (e + ":" + a [e]);
}
À l'heure actuelle, E prend le nom d'attribut, c'est-à-dire x, y, x. Pour obtenir la valeur, le nom du tableau [attribut] est utilisé, donc un [e] est équivalent à un ["x"], a [y "], a [z"], a ["z"]
2.2 Fonctions couramment utilisées dans les tableaux
concat
Ajoutez le tableau après le tableau existant et renvoyez le nouveau tableau sans affecter le tableau existant:
La copie de code est la suivante:
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]]];
alerte (a.concat (b)); // -> 123, Sunnycat
alerte (a); // -> 123
alerte (b.concat (c, d)); // -> SUNNYCATWWW, 21, IDO [objet objet]
alerte (c.concat (b)); // -> www, 21, ido, sunnycat
alert (e.concat (11,22,33) .join ("#")); // -> 1 # 2 # 3 # 4 # 5,6,7,8 # 11 # 22 # 33
Il convient de noter qu'il ne peut être utilisé que pour les tableaux ou les chaînes. Si le (a) connecté est un numérique, booléen ou objet, une erreur sera signalée. Lorsque la chaîne est connectée au tableau, la chaîne sera épissée avec le premier élément du tableau dans un nouvel élément, et la chaîne connectée sera ajoutée avec la chaîne (je ne sais pas la raison, veuillez le divulguer si vous connaissez les informations). Pour ceux qui contiennent des tableaux et des objets, gardez-le la même après la connexion.
Rejoindre
Connectez le tableau à une chaîne avec l'espaceur spécifié:
La copie de code est la suivante:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
Lert (A.Join (",")); // -> a, b, c, d, e, f, g équivalent à a.toString ()
alerte (a.join ("x")); // -> axbxcxdxexfxg
Ceci est facile à comprendre, mais il convient de noter qu'il n'est converti qu'en un réseau unidimensionnel. S'il y a un tableau dans le tableau, il n'utilisera pas la chaîne spécifiée par jointure, mais utilise le toString () par défaut, par exemple,
La copie de code est la suivante:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', [11,22,33]];
alert (a.join ("*")); // -> a * b * c * d * e * f * g * 11,22,33
Remarque: le tableau dans le tableau n'est pas utilisé pour * connexion
populaire
Supprimer le dernier élément du tableau et retourner l'élément
La copie de code est la suivante:
var a = ["aa", "bb", "cc"];
document.Write (a.pop ()); // -> cc
document.write (a); // -> aa, bb
Remarque: Si le tableau est vide, un non-défini est renvoyé.
pousser
Ajoutez un tableau derrière le tableau et retournez la nouvelle longueur du tableau
La copie de code est la suivante:
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])); // -> 5
document.write (a); // -> aa, bb, cc, dd, 1,2,3
La différence par rapport à Concat est que Concat n'affecte pas le tableau d'origine, il renvoie directement le nouveau tableau, tandis que Push modifie directement le tableau d'origine, qui renvoie la nouvelle longueur du tableau.
trier
Tri du tableau, regardons d'abord un exemple
La copie de code est la suivante:
var a = [11,2,3,33445 5654 654, "asd", "b"];
alerte (a.sort ()); // -> 11,2,3,33445 5654 654, Asd, b
Le résultat est-il très surprenant? Oui, le tri n'est pas basé sur la taille entière, mais sur la comparaison des chaînes, qui consiste à comparer le code ANSI du premier caractère, et les petits sont devant. Si la même chose est vraie, le deuxième caractère sera comparé. Si vous souhaitez comparer en fonction des valeurs entières, vous pouvez le faire.
La copie de code est la suivante:
var a = [11,2,3,33445 5654 654];
a.sort (fonction (a, b) {
retourner a - b;
});
alerte (a); // -> 2,3,11,654 5654,33445
La méthode tri () a un paramètre facultatif, qui est la fonction dans le code. Ceci est un exemple simple. Les non-nombres ne peuvent pas être triés. Les non-nombres doivent être davantage jugés, donc je n'en parlerai pas ici.
inverse
Triez inversement le tableau et tri (), prenez la valeur ASCII du premier caractère et comparez-la
La copie de code est la suivante:
var a = [11,3,5,66,4];
alerte (a.reverse ()); // -> 4,66,5,3,11
Si le tableau contient également un tableau, il ne résoudra pas les éléments s'il est traité comme un objet.
La copie de code est la suivante:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', [4,11,33]];
alerte (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
Ce devrait être les 11 derniers, car 4, 11, 33 sont considérés comme une comparaison d'objets complète, ils sont donc classés en premier.
Si vous ne pouvez pas le comprendre, utilisez join () pour le serrer ensemble, et ce sera beaucoup plus évident
changement
Supprimez le premier élément du tableau et renvoyez l'élément, qui est similaire à POP
La copie de code est la suivante:
var a = ["aa", "bb", "cc"];
Document.Write (A.Shift ()); // -> aa
document.write (a); // -> BB, cc
Remarque: Lorsque le tableau est vide, un non-défini est renvoyé.
débarrasser
En revanche pour changer, ajoutez des éléments à l'avant du tableau et renvoyez la nouvelle longueur du tableau.
La copie de code est la suivante:
var a = ["aa", "bb", "cc"];
Document.Write (A.UNSHIFT (11)); // -> 4 Remarque: Undefined est renvoyé dans IE
document.write (a); // -> 11, aa, bb, cc
Document.Write (a.unShift ([11,22])); // -> 5
document.write (a); // -> 11,22,11, aa, bb, cc
Document.Write (a.unshift ("Cat")); // -> 6
document.write (a); // -> chat, 11,22,11, aa, bb, cc
Faites attention à cette méthode, non définie sera retournée dans IE, qui semble être un bug avec Microsoft. Je peux jouer correctement la nouvelle longueur du tableau sous Firefox.
tranche
Fragment de retour de retour
La copie de code est la suivante:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
alerte (a.slice (1,2)); // -> b
alerte (a.slice (2)); // -> C, D, E, F, G
alerte (a.slice (-4)); // -> D, E, F, G
alerte (a.slice (-2, -6)); // -> vide
A.Slice (1,2), à partir de l'indice est 1 à l'indice est 2, notez que les éléments avec indice ne sont pas inclus.
S'il n'y a qu'un seul paramètre, la valeur par défaut est à la fin du tableau
-4 représente le quatrième dernier élément, donc les quatre éléments du compte à rebours sont retournés
La dernière ligne commence de la seconde à durer. Puisqu'il est intercepté plus tard, il est évidemment impossible de récupérer l'élément précédent, il renvoie donc un tableau vide. S'il est changé en a.slice (-6, -2), il renvoie b, c, d, e
épissure
Supprimer un élément d'un fragment du tableau et retourner l'élément supprimé
La copie de code est la suivante:
var a = [1,2,3,4,5,6,7,8,9];
Document.Write (A.Splice (3,2)); // -> 4,5
document.write (a); // -> 1,2,3,6,7,8,9
Document.Write (A.Splice (4)); // -> 7,8,9 Remarque: retour vide sous IE
document.write (a); // -> 1,2,3,6
Document.Write (A.Splice (0,1)); // -> 1
document.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 (a.splice (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 ("#")); // -> EE # 7
document.write (a); // -> 2, cc, aa, tt, 8,9
Notez que cette méthode est dans IE. Le deuxième paramètre est nécessaire. S'il n'est pas rempli, il sera par défaut à 0. Par exemple, A.Splice (4), et dans IE, il reviendra vide. L'effet est équivalent à A.Splice (4,0)
tostring
Convertir les tableaux en chaînes, pas seulement les tableaux, mais tous les objets peuvent utiliser cette méthode
La copie de code est la suivante:
var a = [5,6,7,8,9, ["a", "bb"], 100];
document.write (a.toString ()); // -> 5,6,7,8,9, a, bb, 100
var b = new Date ()
Document.Write (B.ToString ()); // -> Sat 8 août 17:08:32 UTC + 0800 2009
var c = fonction (s) {
alerte (s);
}
document.write (c.toString ()); // -> function (s) {alert (s); }
La valeur booléenne renvoie true ou false, et nom d'objet objet objet]
Comparé à la méthode join (), join () remplace uniquement les tableaux unidimensionnels, tandis que toString () planarise complètement l'ensemble du tableau (indépendamment de la dimension ou multidimensionnelle).
Dans le même temps, cette méthode peut être utilisée pour la conversion décimale, binaire, ength et hexadécimal, par exemple:
La copie de code est la suivante:
var a = [5,6,7,8,9, "a", "bb", 100];
pour (var i = 0; i <a.length; i ++) {
document.write (a [i] .toString () + "binaire est" + a [i] .tostring (2) + ", octal est" + a [i] .tostring (8) + ", hexadecimal est" + a [i] .tostring (16)); // -> 4,5
}
Résultat de sortie:
La copie de code est la suivante:
Le binaire de 5 est 101, l'octal est de 5 et l'hexadécimal est 5
Le binaire de 6 est de 110, l'octal est de 6 ans et l'hexadécimal est 6
Le binaire de 7 est 111, l'octal est de 7 ans et l'hexadécimal est 7
Le binaire de 8 est 1000, l'octal est de 10 et l'hexadécimal est 8
Le binaire de 9 est 1001, l'octal est de 11 ans et l'hexadécimal est 9
Le binaire de a est a, l'octal est un et l'hexadécimal est un
Le binaire de BB est BB, l'octal est BB et l'hexadécimal est BB.
Le binaire de 100 est 1100100, l'octal est de 144 et l'hexadécimal est de 64.
La conversion ne peut être effectuée que sur des éléments. Si le tableau entier est converti, le tableau sera retourné intact.
tolocalestring
Renvoie la chaîne de format local, principalement utilisée sur l'objet de date
La copie de code est la suivante:
var a = new Date ();
document.write (a.toString ()); // -> Sat 8 août 17:28:36 UTC + 0800 2009
document.write (a.tolocalestring ()); // -> 8 août 2009 17:28:36
document.write (a.tolocaledatestring ()); // -> 8 août 2009
La différence est que ToString () renvoie le format standard, et Tolocalestring () renvoie la date complète du format local (dans [Panneau de commande] >> [Options de région et de langue], en modifiant les formats [Temps] et [Date de longue date]), TolocaleDatestring () est le même que Tolocalestring (), mais il ne prend que du temps.
valeur de
Renvoie différentes valeurs d'origine en fonction des différents objets. S'il est utilisé pour la sortie, il est similaire à ToString (). Cependant, ToString () renvoie le type de chaîne et Value Of () renvoie le type d'objet d'origine
La copie de code est la suivante:
var a = [1,2,3, [4,5,6, [7,8,9]]];
var b = new Date ();
var c = true;
var d = fonction () {
alerte ("sunnycat");
};
Document.Write (a.ValueOf ()); // -> 1,2,3,4,5,6,7,8,9
document.write (typeof (a.valueof ())); // -> objet
Document.Write (B.ValueOf ()); // -> 1249874470052
Document.Write (typeof (B.ValueOf ())); // -> numéro
Document.Write (C.ValueOf ()); // -> vrai
document.write (typeof (c.Valueof ())); // -> booléen
Document.Write (D.ValueOf ()); // -> function () {alert ("sunnycat"); }
document.write (typeof (d.ValueOf ())); // -> fonction
Les tableaux sont également des objets, donc typeof (a.valueof ()) renvoie l'objet, et le tableau multidimensionnel retourné est toujours
La copie de code est la suivante:
var a = [1,2,3, [4,5,6, [7,8,9]]];
var aa = a.valueof ();
Document.Write (aa [3] [3] [1]); // -> 8
L'objet date renvoie le nombre de millisecondes à partir du 1er janvier 1970 et les objets mathématiques et erreurs n'ont pas de valeur de méthode.