Pergunta

Como faço para anexar um objeto (como uma string ou número) para uma matriz em JavaScript?

Foi útil?

Solução

Use o método Array.prototype.push para valores acréscimo para um array:

// initialize array
var arr = [
  "Hi",
  "Hello",
  "Bonjour"
];

// append new value to the array
arr.push("Hola");

console.log(arr);


Você pode usar a função push() para anexar mais de um valor para 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ê quiser adicionar os itens de um array para outro array, você pode usar firstArray.concat(secondArray) :

var arr = [
  "apple",
  "banana",
  "cherry"
];

arr = arr.concat([
  "dragonfruit",
  "elderberry",
  "fig"
]);

console.log(arr);

Atualizar

Apenas um complemento a esta resposta se você quiser acrescentar qualquer valor para o início de uma matriz que os meios para o primeiro índice, então você pode usar Array.prototype.unshift para esta finalidade.

var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);

Ele também suporta anexando valores múltiplos de uma só vez como push.

Outras dicas

Se você está adicionando apenas uma única variável, então push() funciona muito bem. Se você precisa anexar uma outra matriz, uso 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 ar1 e ar2 menos transferido, por exemplo:

var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];

ar1 = ar1.concat(ar2);
alert(ar1);

Muita grande informação aqui .

Alguns aferição rápida (cada teste = 500k elementos anexos e os resultados são médias de várias execuções) mostrou o seguinte:

Firefox 3.6 (Mac):

  • Pequenos matrizes: arr[arr.length] = b é mais rápido (300ms vs. 800ms)
  • matrizes grandes: arr.push(b) é mais rápido (500ms vs. 900ms)

Safari 5.0 (Mac):

  • Pequenos matrizes: arr[arr.length] = b é mais rápido (90ms vs. 115MS)
  • matrizes grandes: arr[arr.length] = b é mais rápido (160ms vs. 185ms)

O Google Chrome 6.0 (Mac):

  • matrizes de pequeno porte: Nenhuma diferença significativa (! E Chrome é rápido Somente ~ 38ms !!)
  • matrizes grandes: Nenhuma diferença significativa (160ms)

Eu gosto da sintaxe arr.push() melhor, mas acho que seria melhor fora com o arr[arr.length] versão, pelo menos em velocidade crua. Eu adoraria ver os resultados de uma corrida IE embora.


Os meus laços 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 esse impulso pode ser chamada 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 disto, você pode usar push.apply para anexar um array para outro array assim:

var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);

Annotated ES5 tem mais informações sobre o que exatamente empurrão e se candidatar fazer.

2016 update: com propagação , você não é necessário que apply mais, como:

var arr = ['first'];
arr.push('second', 'third');

arr.push(...['fourth', 'fifth']);
console.log(arr) ;

Você pode usar push e função apply para anexar duas matrizes.

var array1 = [11, 32, 75];
var array2 = [99, 67, 34];

Array.prototype.push.apply(array1, array2);
console.log(array1);

Ele irá acrescentar array2 para array1. Agora array1 contém [11, 32, 75, 99, 67, 34]. Este código é muito mais simples do que escrever laços for para copiar todos e cada item na matriz.

Com o novo operador ES6 propagação , juntando-se duas matrizes utilizando push torna-se 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 arr2 para o final da arr.

Babel REPL Exemplo

Se arr é um array, e val é o valor que você deseja adicionar uso:

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 array1 para 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 ECMAScript 6 padrão que é apoiado pelo Chrome e FF e IE Edge, você pode usar o operador spread:

"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];

array2.push(...array1);

console.log(array2); // [1, 2, 3, 4, 5]

O operador spread irá substituir array2.push(...array1); com array2.push(3, 4, 5); quando o navegador está pensando a lógica.

ponto Bonus

Se você gostaria de criar outro variável para armazenar todos os itens de ambos matriz, você pode fazer isso:

ES5 var combinedArray = array1.concat(array2);

ES6 const combinedArray = [...array1, ...array2]

O operador spread (...) é a espalhar-se todos os itens de uma coleção.

Se você deseja anexar duas matrizes -

var a = ['a', 'b'];
var b = ['c', 'd'];

então você poderia usar:

var c = a.concat(b);

E se você quiser adicionar g registro para array (var a=[]), então você poderia usar:

a.push('g');

O método push() 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 a sua pergunta já foi respondida, mas vamos olhar para algumas outras maneiras de adicionar itens a uma matriz.

O método unshift() 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, por último, o método concat() é usado para unir dois ou mais arrays. 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

Há um par de maneiras para anexar uma matriz em JavaScript:

1) O método push() adiciona um ou mais elementos no final de uma matriz e retorna o novo comprimento da matriz.

var a = [1, 2, 3];
a.push(4, 5);
console.log(a);

Output:

[1, 2, 3, 4, 5]

2) O método unshift() adiciona um ou mais elementos no início de uma matriz e retorna o novo comprimento da matriz:

var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a); 

Output:

[4, 5, 1, 2, 3]

3) O método concat() é usado para unir duas ou mais matrizes. Este método não muda os arranjos existentes, mas em vez disso retorna uma nova matriz.

var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);

Output:

[ "a", "b", "c", "d", "e", "f" ]

4) Você pode usar a propriedade .length da matriz para adicionar um elemento ao final do array:

var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar ); 

Output:

 ["one", "two", "three", "four"]

5) O método splice() muda o conteúdo de uma matriz através da remoção de elementos existentes e / ou a adição de novos elementos:

var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);

Output:

["angel", "clown", "mandarin", "surgeon","nemo"]

6) Você também pode adicionar um novo elemento a uma matriz simplesmente especificando um novo índice e atribuir um valor:

var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);

Output:

["one", "two","three","four"]

Agora, você pode tirar vantagem da sintaxe ES6 e apenas fazer:

let array = [1, 2];
console.log([...array, 3]);

mantendo o imutável matriz original.

Se você sabe que o maior índice (como armazenado em uma variável "i"), então você pode fazer

myArray[i + 1] = someValue;

No entanto, se você não sabe, então você pode usar

myArray.push(someValue);

como outras respostas sugeriram, ou você pode usar

myArray[myArray.length] = someValue; 

Note que a matriz é baseado em zero de modo .length retornar o maior índice mais um.

Além disso, note que você não tem que adicionar em ordem e você pode realmente ignorar valores, como em

myArray[myArray.length + 1000] = someValue;

Em que caso os valores entre terão um valor de indefinido.

Por isso, é uma boa prática quando looping através de um JavaScript para verificar se um valor realmente existe nesse ponto.

Isto pode ser feito por algo como o seguinte:

if(myArray[i] === "undefined"){ continue; }

Se você tem certeza de que você não tem nenhum zeros na matriz, em seguida, você pode apenas fazer:

if(!myArray[i]){ continue; }

Claro que certifique-se neste caso que você não usar como myArray condição [i] (como algumas pessoas sobre a Internet sugerem baseada na final que assim que i é maior, então o maior índice de ele retornará indefinido que avalia a falso)

Anexar único elemento

//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

array Append

//join two or more arrays
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different arrays which are to be combined (concatenated) to an existing array

concat(), naturalmente, pode ser utilizado com 2 matrizes tridimensionais bem. No looping necessário.

var a = [ [1, 2], [3, 4]];

var b = [ [ "A", "b"], [ "C", "d"]];

b = b.concat (a);

alerta (b [2] [1]); // resultado 2

Deixe a propriedade comprimento da matriz fazer o trabalho:

myarray[myarray.length] = 'new element value added to the end of the array';

retornos myArray.length o número de cordas na matriz. JS é zero baseado de modo que a próxima tecla elemento da matriz será o comprimento actual da matriz. EX:

var myarray = [0, 1, 2, 3],
    myarrayLength = myarray.length; //myarrayLength is set to 4

Apenas deseja adicionar um trecho de adição não-destrutivo de um elemento.

var newArr = oldArr.concat([newEl]);

Se você estiver usando o ES6 você pode usar propagação operador para fazê-lo.

var arr = [
    "apple",
    "banana",
    "cherry"
];

var arr2 = [
    "dragonfruit",
    "elderberry",
    "fig"
];

arr.push(...arr2);

Anexar um valor a uma matriz

Desde Array.prototype.push adiciona um ou mais elementos ao final de uma matriz e retorna o novo comprimento da matriz , às vezes queremos apenas para obter a nova matriz up-to-date para que possamos fazer algo assim tão :

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 a nova javascript recurso 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 2 matrizes sem a duplicar você pode tentar 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)

Output: [1,2,3,4,5]

Você .faça pressão sobre () esse valor em. Exemplo: Array.push (valor);

Se você quiser acrescentar um único valor em um array, basta usar o método push. Ele irá adicionar um novo elemento no final da matriz.

Mas se você pretende adicionar vários elementos, em seguida, armazenar os elementos de uma nova matriz e concat a segunda matriz com a primeira matriz ... de qualquer maneira que você 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);

anexar um item único

Para anexar um item único para uma matriz, use o push() método fornecido pelo objeto array:

const fruits = ['banana', 'pear', 'apple']
fruits.push('mango')
console.log(fruits)

mutates push() a matriz original.

Para criar uma nova matriz em vez disso, use o concat() método de array:

const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)

Observe que concat() não realmente adicionar um item à matriz, mas cria uma nova matriz, o que pode ser atribuído a outra variável, ou transferir para a matriz original (declará-la como let, como você não pode transferir um const):

const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
let fruits = ['banana', 'pear', 'apple']
fruits = fruits.concat('mango')

Anexar vários itens

Para anexar um item de múltipla para uma matriz, você pode usar push() chamando-a 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 uma vírgula:

const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango', 'melon', 'avocado')
console.log(allfruits)

ou um array:

const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat(['mango', 'melon', 'avocado'])
console.log(allfruits)

Lembre-se que, tal como descrito anteriormente este método não se transformar a matriz original, mas ele retorna uma nova matriz.

afixado em

Não temos anexar função para a matriz em javascript, mas temos impulso e unshift , imagine que você tem a matriz abaixo:

var arr = [1, 2, 3, 4, 5];

e nós gostamos de acrescentar um valor a essa matriz, o que podemos fazer, arr.push (6) e ele irá adicionar 6 para o final do array:

arr.push(6); // return [1, 2, 3, 4, 5, 6];

também podemos usar unshift, olhada em como podemos aplicar esta:

arr.unshift(0); //return [0, 1, 2, 3, 4, 5];

Eles são as principais funções para adicionar ou acrescentar novos valores para as 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() acrescenta um novo elemento ao final de uma matriz.
pop() remove um elemento a partir da extremidade de uma matriz.

Para anexar um objeto (como uma string ou número) para um uso array -
array.push(toAppend);

Anexar itens em um array

let fruits =["orange","banana","apple","lemon"]; /*array declaration*/

fruits.push("avacado"); /* Adding an element to the array*/

/*displaying elements of the array*/

for(var i=0; i < fruits.length; i++){
  console.log(fruits[i]);
}

Você pode usar o push () se você quiser adicionar valores por exemplo. arr.push("Test1", "Test2");

Se você tem matriz que você pode usar concat () por exemplo. Array1.concat(Array2)

Se você tiver apenas um elemento para adicionar você também pode tentar comprimento menthod por exemplo. array[aray.length] = 'test';

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top