1. Comprender las matrices
Una matriz es una colección de ciertos tipos de datos, y los tipos de datos pueden ser enteros, cadenas o incluso objetos.
JavaScript no admite matrices multidimensionales, sino debido a que las matrices pueden contener objetos (las matrices también son objetos), las matrices pueden lograr funciones similares a las matrices multidimensionales al anidar entre sí.
1.1 Definición de una matriz
Declarar una matriz con 10 elementos:
La copia del código es la siguiente: var a = nueva matriz (10);
En este momento, el espacio de memoria se ha abierto para A, que contiene 10 elementos, y llamado con el nombre de la matriz más [subíndice], por ejemplo, un [2], pero el elemento no se inicializa en este momento, y la llamada volverá indefinida.
El siguiente código define una matriz de variables y asigna valores.
La copia del código es la siguiente:
var a = nueva matriz ();
a [0] = 10;
a [1] = "AAA";
a [2] = 12.6;
Como se mencionó anteriormente, los objetos se pueden colocar en la matriz, como el siguiente código:
La copia del código es la siguiente:
var a = nueva matriz ();
a [0] = verdadero;
a [1] = document.getElementById ("texto");
a [2] = {x: 11, y: 22};
a [3] = new Array ();
Las matrices también se pueden asignar directamente cuando se instancia, por ejemplo:
La copia del código es la siguiente:
var a = nueva matriz (1, 2, 3, 4, 5);
var b = [1, 2, 3, 4, 5];
A y B son ambas matrices, pero B usa una declaración implícita y crea otra instancia. En este momento, si se usa alerta (a == b), aparecerá falso
1.2 Matriz multidimensional
De hecho, JavaScript no admite matrices multidimensionales. En ASP, puede usar Dim A (10,3) para definir matrices multidimensionales. En JavaScript, si usa var a = nueva matriz (10,3) informará un error.
Pero como se mencionó anteriormente, una matriz puede contener objetos, por lo que un elemento en la matriz puede declararse como una matriz, por ejemplo:
La copia del código es la siguiente:
var a = nueva matriz ();
a [0] = new Array ();
a [0] [0] = 1;
alerta (a [0] [0]); // Pop 1
Asignar valor cuando se declara
La copia del código es la siguiente:
var a = nueva matriz ([1,2,3], [4,5,6], [7,8,9]);
var b = [[1,2,3], [4,5,6], [7,8,9]];
El mismo efecto es que A usa la instanciación convencional, B es una declaración implícita, y el resultado es una matriz multidimensional.
1.3 literales de matriz
¿Realmente no sé cómo se llama en matrices de texto chinos?
Hablando de matrices, tenemos que hablar sobre literales de matriz. Las matrices son en realidad objetos especiales. Los objetos tienen propiedades y métodos únicos. Los valores y las llamadas se obtienen a través de nombres de objetos, atributos, objetos y métodos (), mientras que las matrices usan subíndices para obtener valores. Los literales de matriz son muy similares a las matrices, y son colecciones de ciertos tipos de datos. Sin embargo, la matriz literales es fundamentalmente un objeto, las declaraciones y llamadas son diferentes de las matrices:
La copia del código es la siguiente:
var aa = nuevo objeto ();
aa.x = "cat";
aa.y = "soleado";
alerta (aa.x); // gato emergente
Crear un objeto simple. La llamada general es a través de AA.X. Si se trata como literales de matriz, CAT aparecerá con alerta (aa ["x"])
La copia del código es la siguiente:
var a = {x: "Cat", y: "Sunny"};
alerta (a ["y"]); // Popt Up Sunny
Esta es otra forma de crear objetos, y el resultado es el mismo
2. Operación de elementos de matriz
Como se mencionó anteriormente, los elementos se pueden leer y escribir a través de la matriz [Subíndico]
El rango de subíndices es 0 (23 (SuperScript 2) -1). Cuando los subíndices son negativos, el punto flotante o incluso los valores booleanos, la matriz se convertirá automáticamente al tipo de objeto, por ejemplo:
La copia del código es la siguiente:
var b = nueva matriz ();
b [2.2] = "xxxxx";
alerta (b [2.2]); //-> xxxxx
En este momento, es equivalente a B ["2.2"] = "xxxxxx".
2.1 bucle de matrices
La copia del código es la siguiente:
var a = [1,2,3,4,5,6];
para (var i = 0; i <a.length; i ++) {
alerta (a [i]);
}
Este es el más utilizado. Después de pasar por la matriz, el código aparecerá de 1 a 6 a su vez.
Hay otro usado comúnmente:
La copia del código es la siguiente:
var a = [1,2,3,4,5,6];
para (var e in a) {
alerta (e);
}
O aparece de 1 a 6 por su vez. Porque ... en es un objeto que pasa por el objeto (la matriz es un objeto especial) y se usa en la matriz. Debido a que la matriz no tiene nombre de atributo, el valor se emite directamente. Esta declaración de estructura se usa en el objeto, por ejemplo:
La copia del código es la siguiente:
var a = {x: 1, y: 2, z: 3};
para (var e in a) {
alerta (e + ":" + a [e]);
}
En este momento, E toma el nombre del atributo, es decir, x, y, x. Para obtener el valor, se usa el nombre de la matriz [atributo], por lo que un [e] es equivalente a a ["x"], a [y "], a [z"], a ["z"]
2.2 Funciones comúnmente utilizadas en matrices
concatismo
Agregue la matriz después de la matriz existente y devuelva la nueva matriz sin afectar la matriz existente:
La copia del código es la siguiente:
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]]];
alerta (a.concat (b)); // -> 123, Sunnycat
alerta (a); // -> 123
alerta (B.Concat (c, d)); // -> Sunnycatwww, 21, ido [objeto objeto]
alerta (C.Concat (b)); // -> www, 21, ido, Sunnycat
alerta (E.Concat (11,22,33) .Join (" #")); // -> 1 # 2 # 3 # 4 # 5,6,7,8 # 11 # 22 # 33
Cabe señalar que solo se puede usar para matrices o cadenas. Si el conectado (a) es un numérico, booleano u objeto, se informará un error. Cuando la cadena está conectada a la matriz, la cadena se empalmará con el primer elemento de la matriz en un nuevo elemento, y la cadena conectada se agregará con la cadena (no sé el motivo de esto, divulgue si está familiarizado con la información). Para aquellos que contienen matrices y objetos, manténgalo igual después de la conexión.
Unirse
Conecte la matriz en una cadena con el espaciador especificado:
La copia del código es la siguiente:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
lert (A.Join (",")); // -> A, B, C, D, E, F, G es equivalente a A.ToString ()
alerta (A.Join ("x")); // -> axbxcxdxexfxg
Esto es fácil de entender, pero debe tenerse en cuenta que solo se convierte en una matriz unidimensional. Si hay una matriz en la matriz, no usará la cadena especificada por unión, pero use la toString predeterminada (), por ejemplo,
La copia del código es la siguiente:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', [11,22,33]];
alerta (A.Join (" *")); // -> a * b * c * d * e * f * g * 11,22,33
Nota: La matriz en la matriz no se usa para * conexión
estallido
Eliminar el último elemento de la matriz y devolver el elemento
La copia del código es la siguiente:
var a = ["aa", "bb", "cc"];
document.write (a.pop ()); // -> CC
document.write (a); // -> aa, BB
Nota: Si la matriz está vacía, se devuelve indefinido.
empujar
Agregue una matriz detrás de la matriz y devuelva la nueva longitud de la matriz
La copia del código es la siguiente:
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 diferencia de Concat es que Concat no afecta la matriz original, devuelve directamente la nueva matriz, mientras que Push modifica directamente la matriz original, que devuelve la nueva longitud de la matriz.
clasificar
Clasificación de la matriz, primero veamos un ejemplo
La copia del código es la siguiente:
var a = [11,2,3,33445,5654,654, "ASD", "B"];
alerta (a.sort ()); // -> 11,2,3,33445,5654,654, ASD, B
¿El resultado es muy sorprendente? Sí, la clasificación no se basa en el tamaño de entero, sino en la comparación de cadenas, que es comparar el código ANSI del primer carácter, y los pequeños están al frente. Si lo mismo es cierto, se comparará el segundo personaje. Si desea comparar de acuerdo con los valores enteros, puede hacerlo.
La copia del código es la siguiente:
var a = [11,2,3,33445,5654,654];
a.sort (función (a, b) {
devolver a - b;
});
alerta (a); // -> 2,3,11,654,5654,33445
El método sort () tiene un parámetro opcional, que es la función en el código. Este es un ejemplo simple. No se pueden ordenar los no números. Los no números necesitan ser juzgados más, por lo que no hablaré de eso aquí.
contrarrestar
Inversamente ordenar la matriz y sort (), tome el valor ASCII del primer carácter y comparelo
La copia del código es la siguiente:
var a = [11,3,5,66,4];
alerta (A.Reverse ()); // -> 4,66,5,3,11
Si la matriz también contiene una matriz, no resolverá los elementos si se procesa como un objeto.
La copia del código es la siguiente:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', [4,11,33]];
alerta (A.Reverse ()); // -> 4,11,33, G, F, E, D, C, B, A
alerta (A.Join (" *")); // -> 4,11,33 * g * f * e * d * c * b * a
Deben ser los últimos 11, porque 4, 11, 33 son considerados como una comparación de objetos completos, por lo que se clasifican primero.
Si no puede entenderlo, use Join () para encadenarlo, y será mucho más obvio
cambio
Elimine el primer elemento de la matriz y devuelva el elemento, que es similar a POP
La copia del código es la siguiente:
var a = ["aa", "bb", "cc"];
document.write (a.shift ()); // -> aa
document.write (a); // -> BB, CC
Nota: Cuando la matriz está vacía, se devuelve indefinido.
desanimar
A diferencia de Shift, agregue elementos al frente de la matriz y devuelva la nueva longitud de la matriz.
La copia del código es la siguiente:
var a = ["aa", "bb", "cc"];
document.write (a.unshift (11)); // -> 4 Nota: Undefinado se devuelve en 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 ("gato")); // -> 6
document.write (a); // -> gato, 11,22,11, AA, BB, CC
Preste atención a este método, indefinido se devolverá en IE, lo que parece ser un error con Microsoft. Puedo jugar correctamente la nueva longitud de la matriz bajo Firefox.
rebanada
Fragmento de matriz de retorno
La copia del código es la siguiente:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
alerta (A.Slice (1,2)); // -> B
alerta (a.slice (2)); // -> c, d, e, f, g
alerta (A.Slice (-4)); // -> d, e, f, g
alerta (a.slice (-2, -6)); // -> vacío
A.Slice (1,2), a partir del subíndice es 1 al subíndice es 2, tenga en cuenta que los elementos con subíndice no están incluidos.
Si solo hay un parámetro, entonces el valor predeterminado es al final de la matriz
-4 representa el cuarto último elemento, por lo que se devuelven los cuatro elementos en la cuenta regresiva
La última línea comienza de segunda a última vez. Dado que se intercepta más tarde, obviamente es imposible recuperar el elemento anterior, por lo que devuelve una matriz vacía. Si se cambia a A.Slice (-6, -2), devuelve B, C, D, E
empalme
Eliminar un elemento de un fragmento de la matriz y devolver el elemento eliminado
La copia del código es la siguiente:
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 Nota: Regrese vacío en 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"). unir ("#")); // -> aa, BB, CC#6
document.write (a); // -> 2, EE, 7,8,9
document.write (a.splice (1,2, "cc", "aa", "tt"). unirse ("#")); // -> EE#7
document.write (a); // -> 2, cc, aa, tt, 8,9
Tenga en cuenta que este método está en IE. El segundo parámetro es necesario. Si no se llena, se predeterminará a 0. Por ejemplo, A.Splice (4), y en IE, volverá vacío. El efecto es equivalente a A.Splice (4,0)
tostración
Convertir las matrices en cadenas, no solo matrices, sino que todos los objetos pueden usar este método
La copia del código es la siguiente:
var a = [5,6,7,8,9, ["a", "bb"], 100];
document.write (A.ToString ()); // -> 5,6,7,8,9, a, bb, 100
var b = nueva fecha ()
document.write (B.ToString ()); // -> sábado 8 de agosto 17:08:32 UTC+0800 2009
var c = función (s) {
alerta (s);
}
document.write (C.ToString ()); // -> función (s) {alerta (s); }
El valor booleano devuelve verdadero o falso, y el nombre del objeto objeto del objeto]
En comparación con el método Join (), Join () solo reemplaza las matrices unidimensionales, mientras que ToString () planariza completamente la matriz completa (independientemente de las unidimensionales o multidimensionales).
Al mismo tiempo, este método se puede utilizar para la conversión decimal, binaria, inglesa y hexadecimal, por ejemplo:
La copia del código es la siguiente:
var a = [5,6,7,8,9, "a", "bb", 100];
para (var i = 0; i <a.length; i ++) {
document.write (a [i] .ToString () + "binario es" + a [i] .tostring (2) + ", octal es" + a [i] .tostring (8) + ", hexadecimal es" + a [i] .tostring (16)); // -> 4,5
}
Resultado de salida:
La copia del código es la siguiente:
El binario de 5 es 101, el octal es 5 y el hexadecimal es 5
El binario de 6 es 110, el octal es 6 y el hexadecimal es 6
El binario de 7 es 111, el octal es 7 y el hexadecimal es 7
El binario de 8 es 1000, el octal es 10 y el hexadecimal es 8
El binario de 9 es 1001, el octal es 11 y el hexadecimal es 9
El binario de a es a, el octal es a, y el hexadecimal es un
El binario de BB es BB, el octal es BB y el hexadecimal es BB.
El binario de 100 es 1100100, el octal es 144 y el hexadecimal es 64.
La conversión solo se puede realizar en elementos. Si la matriz completa se convierte, la matriz se devolverá intacta.
tolocalestring
Devuelve la cadena de formato local, se usa principalmente en el objeto de fecha
La copia del código es la siguiente:
var a = nueva fecha ();
document.write (A.ToString ()); // -> sábado 8 de agosto 17:28:36 UTC+0800 2009
document.write (A.TolocalEnrring ()); // -> 8 de agosto de 2009 17:28:36
document.write (a.tolocaledateString ()); // -> 8 de agosto de 2009
La diferencia es que ToString () devuelve el formato estándar, y TolocalEstring () devuelve la fecha completa del formato local (en [Panel de control] >> [Opciones de región y idioma], modificando los formatos [Time] y [Fecha Long]), TolocaledEdateString () es lo mismo que Tolocalestring (), pero solo lleva menos tiempo.
valor
Devuelva diferentes valores originales de acuerdo con diferentes objetos. Si se usa para la salida, es similar a ToString (). Sin embargo, toString () devuelve el tipo de cadena, y valueOf () devuelve el tipo de objeto original
La copia del código es la siguiente:
var a = [1,2,3, [4,5,6, [7,8,9]]];
var b = nueva fecha ();
var c = verdadero;
var d = function () {
alerta ("Sunnycat");
};
document.write (A.ValueOf ()); // -> 1,2,3,4,5,6,7,8,9
document.write (typeof (a.valueOf ())); // -> objeto
document.write (B.ValueOf ()); // -> 1249874470052
document.write (typeof (B.ValueOf ())); // -> número
document.write (C.ValueOf ()); // -> verdadero
document.write (typeof (c.valueOf ())); // -> booleano
document.write (D.ValueOf ()); // -> function () {alert ("SunnyCat"); }
document.write (typeof (d.valueOf ())); // -> función
Las matrices también son objetos, por lo que typeOf (a.valueOf ()) devuelve objeto, y la matriz multidimensional devuelta está quieta
La copia del código es la siguiente:
var a = [1,2,3, [4,5,6, [7,8,9]]];
var aa = a.valueOf ();
document.write (aa [3] [3] [1]); // -> 8
El objeto de fecha devuelve el número de milisegundos del 1 de enero de 1970, y los objetos matemáticos y de error no tienen un valor de valor.