Adicionar elementos a uma matriz no JavaScript é um problema muito simples. O próprio JavaScript fornece um grande número dessas funções. Podemos usar as funções de propriedade do JS para adicionar rapidamente elementos à matriz. Este artigo resume os seguintes métodos de JavaScript para adição de matriz.
O método de Arr.Concat (ARR2) era comumente usado para anexar uma matriz, o exemplo é o seguinte:
A cópia do código é a seguinte:
<script type = "text/javascript">
var arr = nova matriz (3);
arr [0] = "matriz de teste 1 é 1";
arr [1] = "matriz de teste 1 é 2";
arr [2] = "matriz de teste 1 é 3";
var Arr2 = nova matriz (3);
ARR2 [0] = "Matriz de teste 2 é 1";
arr2 [1] = "matriz de teste 2 é 2";
ARR2 [2] = "Matriz de teste 2 é 3";
Document.Write (Arr.Concat (ARR2)+"<br/>");
Document.Write (Arr.Concat ("Seu tio 2", "Seu tio 3")+"<br/>")
</script>
Muitas pessoas ficaram confusas sobre a adição e exclusão dos elementos da matriz JS. Agora vou dar o seguinte código de teste:
A cópia do código é a seguinte:
var arr = new Array ();
arr [0] = "AAA";
arr [1] = "bbb";
arr [2] = "ccc";
//alert(arr.length) ;//3
Arr.pop ();
//alert(arr.length) ;//2
//Alert(arrativamente
Arr.pop ();
//Alert(arrativamente
//alert(arr.length) ;//1
var Arr2 = new Array ();
//alert(arr2.Length) ;//0
ARR2 [0] = "AAA";
ARR2 [1] = "BBB";
//alert(arr2.Length) ;//2
ARR2.POP ();
//alert(arr2.length) ;//1
arr2 = arr2.slice (0, arr2.Length-1);
//alert(arr2.Length) ;//0
ARR2 [0] = "AAA";
ARR2 [1] = "BBB";
ARR2 [2] = "CCC";
arr2 = arr2.slice (0,1);
alerta (arr2.Length); // 1
alerta (arr2 [0]); // aaa
alerta (arr2 [1]); // indefinido
Shift: exclua o primeiro item da matriz original e retorne o valor do elemento excluído; Se a matriz estiver vazia, retorne indefinido
var a = [1,2,3,4,5];
var b = a.shift (); // a: [2,3,4,5] b: 1
NIFT: Adicione o parâmetro ao início da matriz original e retorne o comprimento da matriz
var a = [1,2,3,4,5];
var B = A.UnShift (-2, -1); // a: [-2, -1,1,2,3,4,5] b: 7
Nota: O valor de retorno do teste no IE6.0 é sempre indefinido e o valor de retorno do teste no FF2.0 é 7, portanto o valor de retorno desse método não é confiável. Quando você precisa usar o valor de retorno, você pode usar a emenda em vez desse método.
POP: Exclua o último item da matriz original e retorne o valor do elemento excluído; Se a matriz estiver vazia, retorne indefinido
var a = [1,2,3,4,5];
var b = a.pop (); // a: [1,2,3,4] b: 5 // Se você não precisar retornar, basta ligar diretamente
Push: adicione o parâmetro ao final da matriz original e retorne o comprimento da matriz
var a = [1,2,3,4,5];
var b = a.push (6,7); // a: [1,2,3,4,5,6,7] b: 7
Concat: Retorna uma nova matriz, que é composta de adição de parâmetros à matriz original.
var a = [1,2,3,4,5];
var B = A.Concat (6,7); // A: [1,2,3,4,5] B: [1,2,3,4,5,6,7]
Splice (Start, DeleteCount, Val1, Val2, ...): DeleteCount Item da posição inicial e insira Val1, Val2, ...
var a = [1,2,3,4,5];
var b = a.splice (2,2,7,8,9); // A: [1,2,7,8,9,5] B: [3,4]
var b = a.splice (0,1); // A mesma mudança
a.splice (0,0, -2, -1); var B = A.Lengen; // O mesmo desvião
var b = a.splice (A.Length-1,1); // O mesmo pop
A.Splice (A.Length, 0,6,7); var B = A.Lengen; // O mesmo empurrão
reverso: inverso a matriz
var a = [1,2,3,4,5];
var B = A.Reverse (); // a: [5,4,3,2,1] b: [5,4,3,2,1]
Class
var a = [1,2,3,4,5];
var b = a.sort (); // A: [1,2,3,4,5] B: [1,2,3,4,5]
Slice (Start, End): Retorna uma nova matriz composta por itens do subscrito inicial especificado para o subscrito final na matriz original.
var a = [1,2,3,4,5];
var b = a.slice (2,5); // A: [1,2,3,4,5] B: [3,4,5]
Junte -se (separador): agrupe os elementos da matriz em uma corda, com o separador como o separador. Se omitido, use vírgulas como separador por padrão.
var a = [1,2,3,4,5];
var B = A.Join ("|"); // a: [1,2,3,4,5] B: "1 | 2 | 3 | 4 | 5"
Aqui está outra maneira de usar a matriz para simular o JavastringBuffer para processar strings:
/**
* Função de processamento de string
*/
função stringbuffer ()
{
var arr = nova matriz;
this.append = function (str)
{
arr [arr.length] = str;
};
this.toString = function ()
{
retornar arr.join (""); // ping na matriz de apêndice em uma string
};
}
Hoje, de repente descobri que a Juns é uma boa maneira de converter matrizes em strings no aplicativo, então as encapsulei em objetos e usei:
/**
* Converta uma matriz em uma string que é dividida por um símbolo específico
*/
Função ArrayToString (arr, separador)
{
se (! separador) separador = ""; // Se o separador for nulo, estará vazio por padrão
retornar arr.Join (separador);
}
/**
* Encontre a string contida na matriz
*/
Função ArrayFindString (arr, string)
{
var str = arr.Join ("");
return str.IndexOF (String);
}
Finalmente, há um teste para amigos que gostam de tocar A.Push.Apply (A, B); Ao anexar matrizes.
A.Push.Apply (A, B); Esse caminho para si mesmo é legal e você não precisa escrever um loop para o loop e não encontrou nenhum problema. Até hoje, vou encontrar um poço quando o B que eu quero anexar é uma grande variedade.
A cópia do código é a seguinte:
a = new Array ();
b = nova matriz (125624);
A.Push.Apply (A, B);
O código acima lança a seguinte exceção em Mac Chrome
RangeError não capturado: tamanho máximo da pilha de chamadas excedida
Se você alterar a matriz para B = nova matriz (125623); Seria bom ter um elemento menor. Eu testei que outros navegadores também têm grandes matrizes para cometer um erro, mas os valores críticos de diferentes navegadores ainda são diferentes
A sugestão dada aqui é para ser honesta e prática para cada uma, que pode não apenas evitar os problemas de exceção de grandes matrizes, mas também considerar o desempenho de foreach como o mais rápido.