1. Entenda as matrizes
Uma matriz é uma coleção de certos tipos de dados, e os tipos de dados podem ser inteiros, strings ou até objetos.
O JavaScript não suporta matrizes multidimensionais, mas como as matrizes podem conter objetos (matrizes também são objetos), as matrizes podem alcançar funções semelhantes às matrizes multidimensionais, aninhando -se.
1.1 Definindo uma matriz
Declare uma matriz com 10 elementos:
A cópia do código é a seguinte: var a = nova matriz (10);
No momento, o espaço de memória foi aberto para A, contendo 10 elementos, e chamado com o nome da matriz Plus [Subscript], por exemplo, A [2], mas o elemento não é inicializado no momento e a chamada retornará indefinida.
O código a seguir define uma matriz variável e atribui valores.
A cópia do código é a seguinte:
var a = new Array ();
a [0] = 10;
a [1] = "aaa";
a [2] = 12,6;
Como mencionado acima, os objetos podem ser colocados na matriz, como o seguinte código:
A cópia do código é a seguinte:
var a = new Array ();
a [0] = true;
a [1] = document.getElementById ("text");
a [2] = {x: 11, y: 22};
a [3] = new Array ();
As matrizes também podem ser atribuídas diretamente quando instanciadas, por exemplo:
A cópia do código é a seguinte:
var a = nova matriz (1, 2, 3, 4, 5);
var B = [1, 2, 3, 4, 5];
A e B são matrizes, mas B usa uma declaração implícita e cria outra instância. Neste momento, se alerta (a == b) for usado, False será exibido
1.2 Matriz multidimensional
De fato, o JavaScript não suporta matrizes multidimensionais. No ASP, você pode usar DIM A (10,3) para definir matrizes multidimensionais. No JavaScript, se você usar var a = nova matriz (10,3), relatará um erro.
Mas, como mencionado anteriormente, uma matriz pode conter objetos, portanto, um elemento na matriz pode ser declarado como uma matriz, por exemplo:
A cópia do código é a seguinte:
var a = new Array ();
a [0] = new Array ();
a [0] [0] = 1;
alerta (a [0] [0]); // pop 1
Atribuir valor quando declarado
A cópia do código é a seguinte:
var a = nova matriz ([1,2,3], [4,5,6], [7,8,9]);
var b = [[1,2,3], [4,5,6], [7,8,9]];
O mesmo efeito é que um usa instanciação convencional, B é uma declaração implícita e o resultado é uma matriz multidimensional.
1.3 Literais da matriz
Eu realmente não sei como é chamado em chinês, matrizes de texto?
Falando em matrizes, temos que falar sobre os literais da matriz. Matrizes são realmente objetos especiais. Objetos têm propriedades e métodos exclusivos. Valores e chamadas são obtidos através de nomes de objetos, atributos, objetos e métodos (), enquanto as matrizes usam subscritos para obter valores. Os literais da matriz são muito semelhantes às matrizes e são coleções de certos tipos de dados. No entanto, os literais da Array são fundamentalmente um objeto, declarações e chamadas são diferentes das matrizes:
A cópia do código é a seguinte:
var aa = new Object ();
aa.x = "gato";
aa.y = "Sunny";
alerta (aa.x); // POP -UP CAT
Crie um objeto simples. A chamada geral é através do AA.X. Se for tratado como literais de matriz, o gato aparecerá com alerta (aa ["x"])
A cópia do código é a seguinte:
var a = {x: "Cat", y: "Sunny"};
alerta (a ["y"]); // Popa de ensolarado
Essa é outra maneira de criar objetos, e o resultado é o mesmo
2. Operação dos elementos da matriz
Como mencionado acima, os elementos podem ser lidos e escritos através da Array [Subscrito]
O intervalo de subscritos é 0 (23 (Superscript 2) -1). Quando os subscritos são negativos, o ponto flutuante ou até os valores booleanos, a matriz será convertida automaticamente ao tipo de objeto, por exemplo:
A cópia do código é a seguinte:
var b = new Array ();
b [2.2] = "xxxxx";
alerta (b [2.2]); //-> xxxxx
Neste momento, é equivalente a B ["2.2"] = "xxxxx".
2.1 loop of matrizes
A cópia do código é a seguinte:
var a = [1,2,3,4,5,6];
for (var i = 0; i <A.Length; i ++) {
alerta (a [i]);
}
Este é o mais comumente usado. Depois de passar pela matriz, o código será exibido 1 a 6 por sua vez.
Há outro comumente usado:
A cópia do código é a seguinte:
var a = [1,2,3,4,5,6];
para (var e em a) {
alerta (e);
}
Ou apareça de 1 a 6 por sua vez. Pois ... in é um objeto que passa pelo objeto (a matriz é um objeto especial) e é usado na matriz. Como a matriz não possui nome de atributo, o valor é emitido diretamente. Esta declaração de estrutura é usada no objeto, por exemplo:
A cópia do código é a seguinte:
var a = {x: 1, y: 2, z: 3};
para (var e em a) {
alerta (e + ":" + a [e]);
}
Neste momento, E pega o nome do atributo, ou seja, x, y, x. Para obter o valor, o nome da matriz [atributo] é usado; portanto, um [e] é equivalente a um ["x"], um [y "], a [z"], a ["z"]
2.2 Funções comumente usadas em matrizes
Concat
Anexe a matriz após a matriz existente e retorne a nova matriz sem afetar a matriz existente:
A cópia do código é a seguinte:
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 de 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
Deve -se notar que ele só pode ser usado para matrizes ou strings. Se o conectado (a) for um numérico, booleano ou objeto, um erro será relatado. Quando a string estiver conectada à matriz, a string será unida com o primeiro elemento da matriz em um novo elemento, e a string conectada será adicionada à string (não sei o motivo disso, divulgue -a se estiver familiarizado com as informações). Para aqueles que contêm matrizes e objetos, mantenha -o o mesmo após a conexão.
Juntar
Conecte a matriz em uma string com o espaçador especificado:
A cópia do código é a seguinte:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
Lert (A.Join (",")); // -> A, B, C, D, E, F, G é equivalente a A.ToString ()
alerta (A.Join ("X")); // -> AXBXCXDXEXFXG
Isso é fácil de entender, mas deve-se notar que ele é convertido apenas em uma matriz unidimensional. Se houver uma matriz na matriz, ela não usará a string especificada por junção, mas use o tostring padrão (), por exemplo,
A cópia do código é a seguinte:
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: A matriz na matriz não é usada para * conexão
pop
Exclua o último elemento da matriz e devolva o elemento
A cópia do código é a seguinte:
var a = ["aa", "bb", "cc"];
document.write (a.pop ()); // -> cc
document.write (a); // -> aa, bb
Nota: Se a matriz estiver vazia, indefinido será retornado.
empurrar
Adicione uma matriz por trás da matriz e devolva o novo comprimento da matriz
A cópia do código é a seguinte:
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
A diferença do concat é que o Concat não afeta a matriz original, ele retorna diretamente a nova matriz, enquanto pressiona diretamente a matriz original, que retorna o novo comprimento da matriz.
organizar
Classificação da matriz, vamos primeiro olhar para um exemplo
A cópia do código é a seguinte:
var a = [11,2,3.33445.5654.654, "ASD", "b"];
alerta (a.sort ()); // -> 11,2,3.33445.5654.654, ASD, b
O resultado é muito surpreendente? Sim, a classificação não se baseia no tamanho do número inteiro, mas na comparação de strings, que é comparar o código ANSI do primeiro caractere, e os pequenos estão na frente. Se o mesmo for verdadeiro, o segundo caractere será comparado. Se você deseja comparar de acordo com os valores inteiros, pode fazer isso.
A cópia do código é a seguinte:
var a = [11,2,3,33445.5654.654];
a.sort (função (a, b) {
retornar a - b;
});
alerta (a); // -> 2,3,11,654.5654.33445
O método Sort () possui um parâmetro opcional, que é a função no código. Este é um exemplo simples. Os não números não podem ser classificados. Os não números precisam ser mais julgados, então não vou falar sobre isso aqui.
reverter
Classificar inversamente a matriz e classificar (), pegue o primeiro valor de ASCII e compare -o
A cópia do código é a seguinte:
var a = [11,3,5,66,4];
alerta (A.Reverse ()); // -> 4,66,5,3,11
Se a matriz também contiver uma matriz, ela não resolverá os elementos se for processada como um objeto.
A cópia do código é a seguinte:
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
Devem ser os últimos 11, porque 4, 11, 33 são considerados uma comparação completa de objetos, então eles são classificados em primeiro lugar.
Se você não consegue entender, use junção () para unir, e será muito mais óbvio
mudança
Exclua o primeiro elemento da matriz e retorne o elemento, que é semelhante ao pop
A cópia do código é a seguinte:
var a = ["aa", "bb", "cc"];
document.write (a.shift ()); // -> aa
document.write (a); // -> BB, CC
Nota: Quando a matriz está vazia, indefinido é devolvido.
deserto
Ao contrário do turno, adicione elementos à frente da matriz e retorne o novo comprimento da matriz.
A cópia do código é a seguinte:
var a = ["aa", "bb", "cc"];
document.write (a.unshift (11)); // -> 4 Nota: indefinido é devolvido no 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); // -> gato, 11,22,11, AA, BB, CC
Preste atenção a esse método, indefinido será devolvido no IE, o que parece ser um bug da Microsoft. Eu posso tocar corretamente o novo comprimento da matriz sob o Firefox.
fatiar
Retornar fragmento de matriz
A cópia do código é a seguinte:
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)); // -> vazio
A.Slice (1,2), a partir do subscrito é 1 do subscrito é 2, observe que os elementos com subscrito não estão incluídos.
Se houver apenas um parâmetro, o padrão é para o final da matriz
-4 representa o quarto último elemento, então os quatro elementos na contagem regressiva são devolvidos
A última linha começa do segundo ao último. Como é interceptado posteriormente, é obviamente impossível recuperar o elemento anterior, por isso retorna uma matriz vazia. Se for alterado para a.slice (-6, -2), retorna B, C, D, E
emenda
Exclua um elemento de um fragmento da matriz e devolva o elemento excluído
A cópia do código é a seguinte:
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: Retorne vazio em 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"). junção ("#")); // -> AA, BB, CC#6
document.write (a); // -> 2, EE, 7,8,9
document.write (a.splice (1,2, "cc", "aa", "tt"). junção ("#")); // -> EE#7
document.write (a); // -> 2, CC, AA, TT, 8,9
Observe que este método está no IE. O segundo parâmetro é necessário. Se não estiver preenchido, o padrão será 0. Por exemplo, a.splice (4) e, no IE, retornará vazio. O efeito é equivalente a a.splice (4,0)
ToString
Converter matrizes em strings, não apenas matrizes, mas todos os objetos podem usar este método
A cópia do código é a seguinte:
var a = [5,6,7,8,9, ["a", "bb"], 100];
document.write (a.toString ()); // -> 5,6,7,8,9, A, BB, 100
var b = nova data ()
document.write (b.toString ()); // -> Sáb 8 de agosto 17:08:32 UTC+0800 2009
var c = função (s) {
alerta (s);
}
document.write (c.toString ()); // -> funções (s) {alerta (s); }
O valor booleano retorna verdadeiro ou falso, e o nome do objeto objeto]
Comparado com o método de junção (), a junção () substitui apenas matrizes unidimensionais, enquanto a ToString () planeja completamente toda a matriz (independentemente de unidimensional ou multidimensional).
Ao mesmo tempo, esse método pode ser usado para conversão decimal, binária, Ength e hexadecimal, por exemplo:
A cópia do código é a seguinte:
var a = [5,6,7,8,9, "a", "bb", 100];
for (var i = 0; i <A.Length; i ++) {
document.write (a [i] .ToString () + "binário é" + a [i] .ToString (2) + ", octal é" + a [i] .ToString (8) + ", hexadecimal é" + a [i] .ToString (16)); // -> 4,5
}
Resultado da saída:
A cópia do código é a seguinte:
O binário de 5 é 101, o octal é 5 e o hexadecimal é 5
O binário de 6 é 110, o octal é 6 e o hexadecimal é 6
O binário de 7 é 111, o octal é 7 e o hexadecimal é 7
O binário de 8 é 1000, o octal é 10 e o hexadecimal é 8
O binário de 9 é 1001, o octal é 11 e o hexadecimal é 9
O binário de A é A, o octal é a e o hexadecimal é um
O binário de BB é BB, o octal é BB e o hexadecimal é BB.
O binário de 100 é 1100100, o octal é 144 e o hexadecimal é 64.
A conversão só pode ser realizada em elementos. Se toda a matriz for convertida, a matriz será devolvida intacta.
tolocalestring
Retorna a sequência de formato local, usada principalmente no objeto Data
A cópia do código é a seguinte:
var a = new Date ();
document.write (a.toString ()); // -> Sáb 8 de agosto 17:28:36 UTC+0800 2009
document.write (a.tolocalestring ()); // -> 8 de agosto de 2009 17:28:36
document.write (a.tolocaledateString ()); // -> 8 de agosto de 2009
A diferença é que o ToString () retorna o formato padrão e o tolocalestring () retorna a data completa do formato local (em [painel de controle] >> [Região e opções de idioma], modificando os formatos [Horário] e [Data de longa data]), mas apenas o tempo de tolocaledatestring () é o mesmo que tolocalestring (), mas apenas o tempo requer menos.
valorof
Retorne diferentes valores originais de acordo com diferentes objetos. Se usado para saída, é semelhante ao ToString (). No entanto, o ToString () retorna o tipo de string e o valueof () retorna o tipo de objeto original
A cópia do código é a seguinte:
var a = [1,2,3, [4,5,6, [7,8,9]]];
var b = new Date ();
var c = true;
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 ()); // -> true
document.write (typeof (c.valueof ())); // -> booleano
document.write (d.valueof ()); // -> function () {alert ("Sunnycat"); }
document.write (typeof (d.valueof ())); // -> função
Matrizes também são objetos, portanto, tipoof (a.valueof ()) retorna objeto, e a matriz multidimensional retornada ainda é
A cópia do código é a seguinte:
var a = [1,2,3, [4,5,6, [7,8,9]]];
var aa = a.valueof ();
document.write (aa [3] [3] [1]); // -> 8
O objeto Data Retorna o número de milissegundos a partir de 1º de janeiro de 1970, e os objetos de matemática e erro não têm um método de valor.