Use o Array.prototype.push
método para anexar valores a uma matriz:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
Você pode usar a push()
função para acrescentar mais de um valor a uma matriz em uma única chamada:
// initialize array
var arr = ["Hi", "Hello", "Bonjour", "Hola"];
// append multiple values to the array
arr.push("Salut", "Hey");
// display all values
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
Atualizar
Se você deseja adicionar os itens de uma matriz a outra matriz, pode usar firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Atualizar
Apenas uma adição a esta resposta, se você quiser acrescentar algum valor ao início de uma matriz que signifique o primeiro índice, poderá usar Array.prototype.unshift
para esse fim.
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
Ele também suporta a adição de vários valores de uma só vez, assim como push
.
for
nada (use.forEach
).length
propriedade. O intérprete faz um trabalho incrível por si só e não fará nenhuma diferença no Mundo Real, seja você otimizado ou não. Se sua matriz se tornar tão grande que a otimização.length
realmente ajudaria, provavelmente uma matriz não é mais a estrutura de dados correta. O usoforEach
tem suas vantagens, mas é altamente duvidoso que o aumento do desempenho seja um deles, pois a chamada de função para cada iteração gera um custo e não economiza nada.length
propriedade de uma matriz não é calculada toda vez que você a chama, é uma variável armazenada noarray
objeto, que é atualizada somente quando você altera a matriz. Portanto, não há, de fato, nenhum custo de desempenho incluindoarr.length
afor
condição.forEach
funções de retorno de chamada (algumas delas provavelmente já o fazem) e não haverá diferença no código da máquina gerado, se a função for chamada com frequência suficiente para ser compilada em vez de interpretada por o tempo de execução. O mesmo conselho vale para qualquer idioma que não seja assembler, na verdade.Se você estiver apenas acrescentando uma única variável,
push()
funcionará perfeitamente. Se você precisar anexar outra matriz, useconcat()
:O concat não afeta
ar1
e, aar2
menos que seja reatribuído, por exemplo:Muitas ótimas informações aqui .
fonte
How do I append to an array in JavaScript?
, masconcat
na verdade cria uma nova matriz. Essa é uma diferença importante! Em vez disso, eu diria que a resposta abaixo da Omnimike é realmente a melhor: use Push.apply para enviar uma matriz inteira para uma matriz existente sem criar uma nova.ar1 = ar1.concat(ar2);
anexará aar1
ar1
, anexarar2
e retornar a nova matriz. Apenas deixe de fora a parte da atribuição (ar1 = ...
) dessa linha de código e você verá que o originalar1
não mudou de fato. Se você quiser evitar fazer uma cópia, precisarápush
. Não acredite em mim, acredite nos documentos : "O método concat () retorna uma nova matriz" Primeira frase nos documentos paraconcat
.ar2
acima é de qualquer maneira. O resultado de.push
no cenário será= [ar1, [ar2]]
. .concat resolve esse problema, mas com sacrifício de velocidade e uma nova matriz criada. Para usar.push
corretamente os anexos da matriz, faça primeiro o loop do elemento contido e empurre cada um.ar2.forEach(each => { ar1.push(each); });
Alguns testes de referência rápidos (cada teste = 500k elementos anexados e os resultados são médias de várias execuções) mostraram o seguinte:
Firefox 3.6 (Mac):
arr[arr.length] = b
é mais rápido (300 ms vs. 800 ms)arr.push(b)
é mais rápido (500 ms vs. 900 ms)Safari 5.0 (Mac):
arr[arr.length] = b
é mais rápido (90ms vs. 115ms)arr[arr.length] = b
é mais rápido (160ms vs. 185ms)Google Chrome 6.0 (Mac):
Gosto mais da
arr.push()
sintaxe, mas acho que ficaria melhor com aarr[arr.length]
versão, pelo menos em velocidade bruta. Eu adoraria ver os resultados de uma execução do IE.Meus loops de benchmarking:
fonte
Eu acho que vale a pena mencionar que o push pode ser chamado com vários argumentos, que serão anexados à matriz em ordem. Por exemplo:
Como resultado disso, você pode usar push.apply para anexar uma matriz a outra matriz da seguinte maneira:
O ES5 anotado tem mais informações sobre exatamente o que o push and apply faz.
Atualização de 2016: com spread , você não precisa
apply
mais disso , como:fonte
Array.prototype.push.apply()
.Você pode usar
push
eapply
funcionar para acrescentar duas matrizes.Ele será anexado
array2
aarray1
. Agoraarray1
contém[11, 32, 75, 99, 67, 34]
. Esse código é muito mais simples do que escreverfor
loops para copiar todos os itens da matriz.fonte
...
operador em vez de aplicar aconst a1 = [] const a2 = [5,6,7] const.push(...a2)
edição: destaque da sintaxearray1.concat(array2)
nesta situação. A chamada parapush
parece desnecessária.Com o novo operador de spread ES6 , unir duas matrizes usando
push
fica ainda mais fácil:Isso adiciona o conteúdo de
arr2
no final dearr
.Exemplo de Babel REPL
fonte
Se
arr
é uma matriz eval
é o valor que você deseja adicionar, use:Por exemplo
fonte
Use
concat
:fonte
Javascript com ECMAScript 5 padrão que é apoiado pela maioria dos navegadores agora, você pode usar
apply()
para anexararray1
aarray2
.Javascript com o padrão ECMAScript 6, suportado pelo Chrome, FF e IE Edge, você pode usar o
spread
operador:O
spread
operador irá substituirarray2.push(...array1);
comarray2.push(3, 4, 5);
quando o navegador está pensando a lógica.Ponto de bônus
Se você deseja criar outra variável para armazenar todos os itens de ambas as matrizes, faça o seguinte:
ES5
var combinedArray = array1.concat(array2);
ES6
const combinedArray = [...array1, ...array2]
O operador de propagação (
...
) deve espalhar todos os itens de uma coleção.fonte
Se você deseja anexar duas matrizes -
então você pode usar:
E se você deseja adicionar registro
g
ao array (var a=[]
), então você pode usar:fonte
O
push()
método adiciona novos itens ao final de uma matriz e retorna o novo comprimento. Exemplo:A resposta exata para sua pergunta já foi respondida, mas vamos ver outras maneiras de adicionar itens a uma matriz.
O
unshift()
método adiciona novos itens ao início de uma matriz e retorna o novo comprimento. Exemplo:E, finalmente, o
concat()
método é usado para unir duas ou mais matrizes. Exemplo:fonte
Existem algumas maneiras de acrescentar uma matriz no JavaScript:
1) O
push()
método adiciona um ou mais elementos ao final de uma matriz e retorna o novo comprimento da matriz.Resultado:
2) O
unshift()
método adiciona um ou mais elementos ao início de uma matriz e retorna o novo comprimento da matriz:Resultado:
3) O
concat()
método é usado para mesclar duas ou mais matrizes. Este método não altera as matrizes existentes, mas retorna uma nova matriz.Resultado:
4) Você pode usar a
.length
propriedade da matriz para adicionar um elemento ao final da matriz:Resultado:
5) O
splice()
método altera o conteúdo de uma matriz removendo elementos existentes e / ou adicionando novos elementos:Resultado:
6) Você também pode adicionar um novo elemento a uma matriz simplesmente especificando um novo índice e atribuindo um valor:
Resultado:
fonte
push
faz: modifica a matriz original pressionando novos elementos nela. Estou lendo isso errado ou deve ser editado?Agora, você pode tirar proveito da sintaxe do ES6 e apenas fazer:
mantendo a matriz original imutável.
fonte
Se você souber o índice mais alto (como armazenado em uma variável "i"), poderá fazer
No entanto, se você não souber, poderá usar
como outras respostas sugeridas, ou você pode usar
Observe que a matriz é baseada em zero, então .length retorna o índice mais alto mais um.
Observe também que você não precisa adicionar em ordem e pode realmente pular valores, como em
Nesse caso, os valores intermediários terão um valor indefinido.
Portanto, é uma boa prática ao fazer um loop através de um JavaScript para verificar se um valor realmente existe naquele momento.
Isso pode ser feito por algo como o seguinte:
se você tem certeza de que não possui zeros na matriz, basta fazer o seguinte:
Obviamente, certifique-se de que, neste caso, você não use como a condição myArray [i] (como algumas pessoas na Internet sugerem, com base no fim de que, assim que eu for maior, o índice mais alto retornará indefinido, que é avaliado como falso)
fonte
"undefined"
. Deve lervoid 0
!"undefined"
é uma sequência e"undefined" !== void 0
, portanto, vocêif(myArray[i]
é falso, a menos que a matriz no índicei
seja configurada para a sequência com o conteúdo equivalente a'u'+'n'+'d'+'e'+'f'+'i'+'n'+'e'+'d'
. Observe também que você não deve usarundefined
, em vez disso, usevoid 0
. Comovoid 0
sempre é o valor indefinido, whileundefined
pode ser definido por meio de algo comofunction x(undefined) { alert(undefined) } x("hello world")
, portanto, você não pode ter certeza se alguém acidentalmente configurouwindow["undefined"]=1
ou semelhante.Anexar elemento único
Anexar vários elementos
Anexar matriz
fonte
arrName.push('newElemenet1, newElemenet2, newElemenet3')
?arrName
era longa1
.concat()
, é claro, também pode ser usado com matrizes bidimensionais. Não é necessário loop.fonte
Deixe a propriedade length da matriz fazer o trabalho:
myarray.length retorna o número de strings na matriz. JS é zero, portanto a próxima chave do elemento da matriz será o comprimento atual da matriz. EX:
fonte
fonte
Anexar um valor a uma matriz
Desde Array.prototype.push adiciona um ou mais elementos ao final de uma matriz e retorna o novo tamanho da matriz , às vezes queremos apenas obter a nova matriz atualizada para que possamos fazer algo assim:
Ou apenas:
fonte
Se você estiver usando o ES6, poderá usar o operador spread para fazer isso.
fonte
você pode fazer isso usando o novo recurso javascript Es 6:
fonte
se você quiser combinar duas matrizes sem a duplicata, tente o código abaixo
uso:
Saída: [1,2,3,4,5]
fonte
Anexar um único item
Para anexar um único item a uma matriz, use o
push()
método fornecido pelo objeto Array:push()
muda a matriz original.Para criar uma nova matriz, use o
concat()
método Array:Observe que
concat()
, na verdade, não adiciona um item à matriz, mas cria uma nova matriz, que você pode atribuir a outra variável ou reatribuir à matriz original (declarando-a comolet
, pois não é possível reatribuir aconst
):Anexar vários itens
Para anexar um item múltiplo a uma matriz, você pode usá
push()
-lo chamando-o com vários argumentos:Você também pode usar o
concat()
método que você viu antes, passando uma lista de itens separados por vírgula:ou uma matriz:
Lembre-se de que, conforme descrito anteriormente, esse método não altera a matriz original, mas retorna uma nova matriz.
fonte
Você empurra () esse valor em. Exemplo: array.push (valor);
fonte
Se você deseja acrescentar um único valor a uma matriz, basta usar o método push. Ele adicionará um novo elemento no final da matriz.
Mas se você pretende adicionar vários elementos, armazene os elementos em uma nova matriz e concatene a segunda matriz com a primeira matriz ... da maneira que desejar.
fonte
Não temos a função de acréscimo para Array em javascript, mas temos push e unshift , imagine que você tenha o array abaixo:
e gostamos de acrescentar um valor a essa matriz, podemos fazer, arr.push (6) e ela adicionará 6 ao final da matriz:
também podemos usar unshift, veja como podemos aplicar isso:
São as principais funções para adicionar ou acrescentar novos valores às matrizes.
fonte
Você pode usar o método push.
fonte
push()
adiciona um novo elemento ao final de uma matriz.pop()
remove um elemento do final de uma matriz.Para anexar um objeto (como uma sequência ou número) a uma matriz, use -
array.push(toAppend);
fonte
Anexando itens em uma matriz
fonte
Você pode usar o push () se desejar adicionar valores, por exemplo
arr.push("Test1", "Test2");
Se você possui um array, pode usar concat (), por exemplo
Array1.concat(Array2)
Se você tiver apenas um elemento para adicionar, também pode tentar o comprimento menthod, por exemplo
array[aray.length] = 'test';
fonte