Como anexar um objeto (como uma sequência ou número) a uma matriz em JavaScript?
Como anexar um objeto (como uma sequência ou número) a uma matriz em JavaScript?
Respostas:
Use o Array.prototype.pushmé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.unshiftpara 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.
fornada (use .forEach).
lengthpropriedade. 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 .lengthrealmente ajudaria, provavelmente uma matriz não é mais a estrutura de dados correta. O uso forEachtem 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.
lengthpropriedade de uma matriz não é calculada toda vez que você a chama, é uma variável armazenada no arrayobjeto, que é atualizada somente quando você altera a matriz. Portanto, não há, de fato, nenhum custo de desempenho incluindo arr.lengtha forcondição.
forEachfunçõ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, use concat():
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
O concat não afeta ar1e, a ar2menos que seja reatribuído, por exemplo:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
Muitas ótimas informações aqui .
How do I append to an array in JavaScript?, mas concatna 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, anexar ar2e retornar a nova matriz. Apenas deixe de fora a parte da atribuição ( ar1 = ...) dessa linha de código e você verá que o original ar1 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 para concat.
ar2acima é de qualquer maneira. O resultado de .pushno cenário será = [ar1, [ar2]]. .concat resolve esse problema, mas com sacrifício de velocidade e uma nova matriz criada. Para usar .pushcorretamente 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 a arr[arr.length]versão, pelo menos em velocidade bruta. Eu adoraria ver os resultados de uma execução do IE.
Meus loops de benchmarking:
function arrpush_small() {
var arr1 = [];
for (a = 0; a < 100; a++)
{
arr1 = [];
for (i = 0; i < 5000; i++)
{
arr1.push('elem' + i);
}
}
}
function arrlen_small() {
var arr2 = [];
for (b = 0; b < 100; b++)
{
arr2 = [];
for (j = 0; j < 5000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}
}
function arrpush_large() {
var arr1 = [];
for (i = 0; i < 500000; i++)
{
arr1.push('elem' + i);
}
}
function arrlen_large() {
var arr2 = [];
for (j = 0; j < 500000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}
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:
var arr = ['first'];
arr.push('second', 'third');
console.log(arr);
Como resultado disso, você pode usar push.apply para anexar uma matriz a outra matriz da seguinte maneira:
var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);
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 applymais disso , como:
var arr = ['first'];
arr.push('second', 'third');
arr.push(...['fourth', 'fifth']);
console.log(arr) ;
Array.prototype.push.apply().
Você pode usar pushe applyfuncionar para acrescentar duas matrizes.
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
console.log(array1);
Ele será anexado array2a array1. Agora array1contém [11, 32, 75, 99, 67, 34]. Esse código é muito mais simples do que escrever forloops para copiar todos os itens da matriz.
...operador em vez de aplicar a const a1 = [] const a2 = [5,6,7] const.push(...a2) edição: destaque da sintaxe
array1.concat(array2)nesta situação. A chamada para pushparece desnecessária.
Com o novo operador de spread ES6 , unir duas matrizes usando pushfica ainda mais fácil:
var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr);
Isso adiciona o conteúdo de arr2no final de arr.
Se arré uma matriz e valé o valor que você deseja adicionar, use:
arr.push(val);
Por exemplo
var arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);
Use concat:
a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);
console.log(a);
Javascript com ECMAScript 5 padrão que é apoiado pela maioria dos navegadores agora, você pode usar apply()para anexar array1a array2.
var array1 = [3, 4, 5];
var array2 = [1, 2];
Array.prototype.push.apply(array2, array1);
console.log(array2); // [1, 2, 3, 4, 5]
Javascript com o padrão ECMAScript 6, suportado pelo Chrome, FF e IE Edge, você pode usar o spreadoperador:
"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];
array2.push(...array1);
console.log(array2); // [1, 2, 3, 4, 5]
O spreadoperador irá substituir array2.push(...array1);com array2.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.
Se você deseja anexar duas matrizes -
var a = ['a', 'b'];
var b = ['c', 'd'];
então você pode usar:
var c = a.concat(b);
E se você deseja adicionar registro gao array ( var a=[]), então você pode usar:
a.push('g');
O push()método adiciona novos itens ao final de uma matriz e retorna o novo comprimento. Exemplo:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");
// The result of fruits will be:
Banana, Orange, Apple, Mango, Kiwi
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:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon", "Pineapple");
// The result of fruits will be:
Lemon, Pineapple, Banana, Orange, Apple, Mango
E, finalmente, o concat()método é usado para unir duas ou mais matrizes. Exemplo:
var fruits = ["Banana", "Orange"];
var moreFruits = ["Apple", "Mango", "Lemon"];
var allFruits = fruits.concat(moreFruits);
// The values of the children array will be:
Banana, Orange, Apple, Mango, Lemon
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.
var a = [1, 2, 3];
a.push(4, 5);
console.log(a);
Resultado:
[1, 2, 3, 4, 5]
2) Ounshift() método adiciona um ou mais elementos ao início de uma matriz e retorna o novo comprimento da matriz:
var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a);
Resultado:
[4, 5, 1, 2, 3]
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.
var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);
Resultado:
[ "a", "b", "c", "d", "e", "f" ]
4) Você pode usar a .lengthpropriedade da matriz para adicionar um elemento ao final da matriz:
var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar );
Resultado:
["one", "two", "three", "four"]
5) O splice()método altera o conteúdo de uma matriz removendo elementos existentes e / ou adicionando novos elementos:
var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);
Resultado:
["angel", "clown", "mandarin", "surgeon","nemo"]
6) Você também pode adicionar um novo elemento a uma matriz simplesmente especificando um novo índice e atribuindo um valor:
var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);
Resultado:
["one", "two","three","four"]
pushfaz: 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:
let array = [1, 2];
console.log([...array, 3]);
mantendo a matriz original imutável.
Se você souber o índice mais alto (como armazenado em uma variável "i"), poderá fazer
myArray[i + 1] = someValue;
No entanto, se você não souber, poderá usar
myArray.push(someValue);
como outras respostas sugeridas, ou você pode usar
myArray[myArray.length] = someValue;
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
myArray[myArray.length + 1000] = someValue;
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:
if(myArray[i] === "undefined"){ continue; }
se você tem certeza de que não possui zeros na matriz, basta fazer o seguinte:
if(!myArray[i]){ continue; }
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)
"undefined". Deve ler void 0! "undefined"é uma sequência e "undefined" !== void 0, portanto, você if(myArray[i]é falso, a menos que a matriz no índice iseja 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 usar undefined, em vez disso, use void 0. Como void 0sempre é o valor indefinido, while undefinedpode ser definido por meio de algo como function x(undefined) { alert(undefined) } x("hello world"), portanto, você não pode ter certeza se alguém acidentalmente configurou window["undefined"]=1ou semelhante.
Anexar elemento único
//Append to the end
arrName.push('newName1');
//Prepend to the start
arrName.unshift('newName1');
//Insert at index 1
arrName.splice(1, 0,'newName1');
//1: index number, 0: number of element to remove, newName1: new element
// Replace index 3 (of exists), add new element otherwise.
arrName[3] = 'newName1';
Anexar vários elementos
//Insert from index number 1
arrName.splice(1, 0,'newElemenet1', 'newElemenet2', 'newElemenet3');
//1: index number from where insert starts,
//0: number of element to remove,
//newElemenet1,2,3: new elements
Anexar matriz
//join two or more arrays
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different arrays which are to be combined (concatenated) to an existing array
arrName.push('newElemenet1, newElemenet2, newElemenet3')?
arrNameera longa 1.
myarray[myarray.length] = 'new element value added to the end of the array';
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:
var myarray = [0, 1, 2, 3],
myarrayLength = myarray.length; //myarrayLength is set to 4
Só quero adicionar um trecho para a adição não destrutiva de um elemento.
var newArr = oldArr.concat([newEl]);
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:
const arr = [1, 2, 3];
const val = 4;
arr.concat([val]); // [1, 2, 3, 4]
Ou apenas:
[...arr, val] // [1, 2, 3, 4]
você pode fazer isso usando o novo recurso javascript Es 6:
// initialize array
var arr = [
"Hi",
"Hello",
"Bangladesh"
];
// append new value to the array
arr= [...arr , "Feni"];
// or you can put a variable value
var testValue = "Cool";
arr = [...arr , testValue ];
console.log(arr);
// final output [ 'Hi', 'Hello', 'Bangladesh', 'Feni', 'Cool' ]
se você quiser combinar duas matrizes sem a duplicata, tente o código abaixo
array_merge = function (arr1, arr2) {
return arr1.concat(arr2.filter(function(item){
return arr1.indexOf(item) < 0;
}))
}
uso:
array1 = ['1', '2', '3']
array2 = ['2', '3', '4', '5']
combined_array = array_merge(array1, array2)
Saída: [1,2,3,4,5]
Para anexar um único item a uma matriz, use o push()método fornecido pelo objeto Array:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango')
console.log(fruits)
push() muda a matriz original.
Para criar uma nova matriz, use o concat()método Array:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
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 como let, pois não é possível reatribuir a const):
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
let fruits = ['banana', 'pear', 'apple']
fruits = fruits.concat('mango')
Para anexar um item múltiplo a uma matriz, você pode usá push()-lo chamando-o com vários argumentos:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango', 'melon', 'avocado')
console.log(fruits)
Você também pode usar o concat()método que você viu antes, passando uma lista de itens separados por vírgula:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango', 'melon', 'avocado')
console.log(allfruits)
ou uma matriz:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat(['mango', 'melon', 'avocado'])
console.log(allfruits)
Lembre-se de que, conforme descrito anteriormente, esse método não altera a matriz original, mas retorna uma nova matriz.
Originalmente publicado em
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.
arr=['a','b','c'];
arr.push('d');
//now print the array in console.log and it will contain 'a','b','c','d' as elements.
console.log(array);
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:
var arr = [1, 2, 3, 4, 5];
e gostamos de acrescentar um valor a essa matriz, podemos fazer, arr.push (6) e ela adicionará 6 ao final da matriz:
arr.push(6); // return [1, 2, 3, 4, 5, 6];
também podemos usar unshift, veja como podemos aplicar isso:
arr.unshift(0); //return [0, 1, 2, 3, 4, 5];
São as principais funções para adicionar ou acrescentar novos valores às matrizes.
Você pode usar o método push.
Array.prototype.append = function(destArray){
destArray = destArray || [];
this.push.call(this,...destArray);
return this;
}
var arr = [1,2,5,67];
var arr1 = [7,4,7,8];
console.log(arr.append(arr1));// [7, 4, 7, 8, 1, 4, 5, 67, 7]
console.log(arr.append("Hola"))//[1, 2, 5, 67, 7, 4, 7, 8, "H", "o", "l", "a"]
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);
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';