Respuestas:
Use el Array.prototype.push
método para agregar valores a una matriz:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
Puede usar la push()
función para agregar más de un valor a una matriz en una sola llamada:
// 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]);
}
Actualizar
Si desea agregar los elementos de una matriz a otra matriz, puede usar firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Actualizar
Solo una adición a esta respuesta si desea agregar cualquier valor al comienzo de una matriz que signifique para el primer índice que luego puede usar Array.prototype.unshift
para este propósito.
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
También admite agregar múltiples valores a la vez como push
.
for
en absoluto (usar .forEach
).
length
propiedad. El intérprete hace un trabajo increíble en sí mismo y no hará ninguna diferencia en el mundo real, ya sea que lo optimice o no. Si su matriz se vuelve tan grande que la optimización .length
realmente ayudaría, lo más probable es que una matriz ya no sea la estructura de datos correcta. El uso forEach
tiene sus ventajas, pero es muy dudoso que el aumento del rendimiento sea una de ellas, ya que la llamada a la función para cada iteración conlleva un costo y no ahorra nada.
length
propiedad de una matriz no se calcula cada vez que se llama, es una variable almacenada en el array
objeto, que solo se actualiza cuando se modifica la matriz. Por lo tanto, de hecho, no hay ningún costo de rendimiento al incluir arr.length
la for
condición.
forEach
funciones de devolución de llamada en línea (algunas de ellas probablemente ya lo hagan) y no habrá diferencia en el código de máquina generado, si la función se llama con la frecuencia suficiente para ser compilada en lugar de ser interpretada por El tiempo de ejecución. El mismo consejo se aplica a cualquier lenguaje que no sea ensamblador, en realidad.
Si solo está agregando una sola variable, entonces push()
funciona bien. Si necesita agregar otra matriz, use concat()
:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
var ar3 = ar1.concat(ar2);
alert(ar1);
alert(ar2);
alert(ar3);
El concat no afecta ar1
y, a ar2
menos que sea reasignado, por ejemplo:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
Mucha información genial aquí .
How do I append to an array in JavaScript?
, pero en concat
realidad crea una nueva matriz. Esa es una diferencia importante! En cambio, diría que la respuesta a continuación de Omnimike es en realidad la mejor: use Push.apply para insertar una matriz completa en una matriz existente sin crear una nueva.
ar1 = ar1.concat(ar2);
se añadirá aar1
ar1
, anexar ar2
y luego devolver la nueva matriz. Simplemente omita la parte de asignación ( ar1 = ...
) de esa línea de código y verá que el original ar1
no cambió. Si desea evitar hacer una copia, la necesitará push
. No me creas, cree en los documentos : "El método concat () devuelve una nueva matriz" Primera oración en los documentos para concat
.
ar2
todos modos es lo anterior. El resultado de .push
en el escenario será = [ar1, [ar2]]
. .concat resuelve ese problema, pero con sacrificio de velocidad y una nueva matriz creada. Para usarlo .push
correctamente en los anexos de matriz, haga un bucle del elemento contenido primero y presione cada uno. ar2.forEach(each => { ar1.push(each); });
Algunos puntos de referencia rápidos (cada prueba = 500k elementos adjuntos y los resultados son promedios de múltiples ejecuciones) mostraron lo siguiente:
Firefox 3.6 (Mac):
arr[arr.length] = b
es más rápido (300 ms frente a 800 ms)arr.push(b)
es más rápido (500 ms frente a 900 ms)Safari 5.0 (Mac):
arr[arr.length] = b
es más rápido (90 ms frente a 115 ms)arr[arr.length] = b
es más rápido (160 ms frente a 185 ms)Google Chrome 6.0 (Mac):
Me gusta más la arr.push()
sintaxis, pero creo que estaría mejor con la arr[arr.length]
versión, al menos en velocidad bruta. Sin embargo, me encantaría ver los resultados de una ejecución de IE.
Mis bucles de evaluación comparativa:
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;
}
}
Creo que vale la pena mencionar que se puede llamar push con múltiples argumentos, que se agregarán a la matriz en orden. Por ejemplo:
var arr = ['first'];
arr.push('second', 'third');
console.log(arr);
Como resultado de esto, puede usar push.apply para agregar una matriz a otra matriz de la siguiente manera:
var arr = ['first'];
arr.push('second', 'third');
arr.push.apply(arr, ['forth', 'fifth']);
console.log(arr);
El ES5 anotado tiene más información sobre exactamente qué hacer y aplicar .
Actualización de 2016: con spread , ya no lo necesitas apply
, como:
var arr = ['first'];
arr.push('second', 'third');
arr.push(...['fourth', 'fifth']);
console.log(arr) ;
Array.prototype.push.apply()
aunque preferiría usarla .
Puede usar push
y apply
función para agregar dos matrices.
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
console.log(array1);
Anexará array2
a array1
. Ahora array1
contiene [11, 32, 75, 99, 67, 34]
. Este código es mucho más simple que escribir for
bucles para copiar todos y cada uno de los elementos de la matriz.
...
operador en lugar de aplicar la const a1 = [] const a2 = [5,6,7] const.push(...a2)
edición: resaltado de sintaxis
array1.concat(array2)
en esta situación. La llamada a push
parece innecesaria.
Con el nuevo operador de propagación ES6 , unir dos matrices usando push
es aún más fácil:
var arr = [1, 2, 3, 4, 5];
var arr2 = [6, 7, 8, 9, 10];
arr.push(...arr2);
console.log(arr);
Esto agrega el contenido de arr2
al final de arr
.
Si arr
es una matriz y val
es el valor que desea agregar, use:
arr.push(val);
P.ej
var arr = ['a', 'b', 'c'];
arr.push('d');
console.log(arr);
Uso concat
:
a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);
console.log(a);
Javascript con ECMAScript 5 estándar que es apoyada por la mayoría de los navegadores de hoy, se puede utilizar apply()
para anexar array1
a 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 con el estándar ECMAScript 6 que es compatible con Chrome y FF e IE Edge, puede usar el spread
operador:
"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];
array2.push(...array1);
console.log(array2); // [1, 2, 3, 4, 5]
El spread
operador reemplazará array2.push(...array1);
conarray2.push(3, 4, 5);
la que el explorador está pensando en la lógica.
Punto de bonificación
Si quieres crear otro variable para almacenar todos los elementos de ambas matrices, puede hacer esto:
ES5 var combinedArray = array1.concat(array2);
ES6 const combinedArray = [...array1, ...array2]
El operador de propagación ( ...
) es distribuir todos los elementos de una colección.
Si desea agregar dos matrices:
var a = ['a', 'b'];
var b = ['c', 'd'];
entonces podrías usar:
var c = a.concat(b);
Y si desea agregar un registro g
a la matriz ( var a=[]
), puede usar:
a.push('g');
El push()
método agrega nuevos elementos al final de una matriz y devuelve la nueva longitud. Ejemplo:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");
// The result of fruits will be:
Banana, Orange, Apple, Mango, Kiwi
La respuesta exacta a su pregunta ya está respondida, pero veamos algunas otras formas de agregar elementos a una matriz.
El unshift()
método agrega nuevos elementos al comienzo de una matriz y devuelve la nueva longitud. Ejemplo:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon", "Pineapple");
// The result of fruits will be:
Lemon, Pineapple, Banana, Orange, Apple, Mango
Y, por último, el concat()
método se utiliza para unir dos o más matrices. Ejemplo:
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
Hay un par de formas de agregar una matriz en JavaScript:
1) El push()
método agrega uno o más elementos al final de una matriz y devuelve la nueva longitud de la matriz.
var a = [1, 2, 3];
a.push(4, 5);
console.log(a);
Salida:
[1, 2, 3, 4, 5]
2) El unshift()
método agrega uno o más elementos al comienzo de una matriz y devuelve la nueva longitud de la matriz:
var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a);
Salida:
[4, 5, 1, 2, 3]
3) El concat()
método se usa para fusionar dos o más matrices. Este método no cambia las matrices existentes, sino que devuelve una nueva matriz.
var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);
Salida:
[ "a", "b", "c", "d", "e", "f" ]
4) Puede usar la .length
propiedad de la matriz para agregar un elemento al final de la matriz:
var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar );
Salida:
["one", "two", "three", "four"]
5) El splice()
método cambia el contenido de una matriz eliminando elementos existentes y / o agregando nuevos elementos:
var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);
Salida:
["angel", "clown", "mandarin", "surgeon","nemo"]
6) También puede agregar un nuevo elemento a una matriz simplemente especificando un nuevo índice y asignando un valor:
var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);
Salida:
["one", "two","three","four"]
push
hace: modifica la matriz original empujando nuevos elementos sobre ella. ¿Estoy leyendo esto mal, o debería ser editado?
Ahora, puede aprovechar la sintaxis de ES6 y simplemente hacer:
let array = [1, 2];
console.log([...array, 3]);
manteniendo la matriz original inmutable.
Si conoce el índice más alto (como el almacenado en una variable "i"), puede hacer
myArray[i + 1] = someValue;
Sin embargo, si no sabe, puede usar
myArray.push(someValue);
como sugirieron otras respuestas, o puede usar
myArray[myArray.length] = someValue;
Tenga en cuenta que la matriz está basada en cero, por lo que la longitud devuelve el índice más alto más uno.
También tenga en cuenta que no tiene que agregar en orden y puede omitir valores, como en
myArray[myArray.length + 1000] = someValue;
En cuyo caso, los valores intermedios tendrán un valor indefinido.
Por lo tanto, es una buena práctica al recorrer un JavaScript para verificar que realmente exista un valor en ese punto.
Esto se puede hacer de la siguiente manera:
if(myArray[i] === "undefined"){ continue; }
Si está seguro de que no tiene ceros en la matriz, puede hacer lo siguiente:
if(!myArray[i]){ continue; }
Por supuesto, asegúrese en este caso de que no use como condición myArray [i] (como algunas personas en Internet sugieren que, tan pronto como sea mayor, el índice más alto volverá indefinido, lo que se evalúa como falso)
"undefined"
. Debe leer void 0
! "undefined"
es una cadena y "undefined" !== void 0
, por lo tanto, su if(myArray[i]
es falso a menos que la matriz en el índice i
se establezca en la cadena con el contenido equivalente de 'u'+'n'+'d'+'e'+'f'+'i'+'n'+'e'+'d'
. También tenga en cuenta que no debe usar undefined
, sino usar void 0
. Porque void 0
siempre es el valor indefinido, mientras que undefined
puede definirse a través de algo así function x(undefined) { alert(undefined) } x("hello world")
, por lo que no puede estar seguro de si alguien configuró accidentalmente window["undefined"]=1
o similar.
Agregar 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';
Agregar elementos múltiples
//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
Agregar 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')
?
arrName
era larga 1
.
myarray[myarray.length] = 'new element value added to the end of the array';
myarray.length devuelve el número de cadenas en la matriz. JS se basa en cero, por lo que la siguiente clave de elemento de la matriz será la longitud actual de la matriz. EX:
var myarray = [0, 1, 2, 3],
myarrayLength = myarray.length; //myarrayLength is set to 4
Solo quiero agregar un fragmento para la adición no destructiva de un elemento.
var newArr = oldArr.concat([newEl]);
Dado que Array.prototype.push agrega uno o más elementos al final de una matriz y devuelve la nueva longitud de la matriz , a veces solo queremos obtener la nueva matriz actualizada para que podamos hacer algo así:
const arr = [1, 2, 3];
const val = 4;
arr.concat([val]); // [1, 2, 3, 4]
O solo:
[...arr, val] // [1, 2, 3, 4]
Si está utilizando el ES6, puede usar el operador de propagación para hacerlo.
var arr = [
"apple",
"banana",
"cherry"
];
var arr2 = [
"dragonfruit",
"elderberry",
"fig"
];
arr.push(...arr2);
puedes hacerlo usando la nueva función 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' ]
si desea combinar 2 matrices sin el duplicado, puede probar el siguiente código
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)
Salida: [1,2,3,4,5]
Para agregar un solo elemento a una matriz, use el push()
método proporcionado por el objeto Array:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango')
console.log(fruits)
push()
Muta la matriz original.
Para crear una nueva matriz, use el concat()
método Array:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango')
console.log(allfruits)
Tenga en cuenta que en concat()
realidad no agrega un elemento a la matriz, sino que crea una nueva matriz, que puede asignar a otra variable o reasignar a la matriz original (declarándolo como let
, ya que no puede reasignar 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 agregar un elemento múltiple a una matriz, puede usarlo push()
llamándolo con varios argumentos:
const fruits = ['banana', 'pear', 'apple']
fruits.push('mango', 'melon', 'avocado')
console.log(fruits)
También puede usar el concat()
método que vio antes, pasando una lista de elementos separados por una coma:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat('mango', 'melon', 'avocado')
console.log(allfruits)
o una matriz:
const fruits = ['banana', 'pear', 'apple']
const allfruits = fruits.concat(['mango', 'melon', 'avocado'])
console.log(allfruits)
Recuerde que, como se describió anteriormente, este método no muta la matriz original, pero devuelve una nueva matriz.
Si desea agregar un solo valor a una matriz, simplemente use el método push. Agregará un nuevo elemento al final de la matriz.
Pero si tiene la intención de agregar varios elementos, almacene los elementos en una nueva matriz y concatene la segunda matriz con la primera matriz ... de cualquier manera que desee.
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);
No tenemos la función append para Array en javascript, pero tenemos push y unshift , imagina que tienes la siguiente matriz:
var arr = [1, 2, 3, 4, 5];
y nos gusta agregar un valor a esta matriz, podemos hacer, arr.push (6) y agregará 6 al final de la matriz:
arr.push(6); // return [1, 2, 3, 4, 5, 6];
también podemos usar unshift, mira cómo podemos aplicar esto:
arr.unshift(0); //return [0, 1, 2, 3, 4, 5];
Son funciones principales para agregar o agregar nuevos valores a las matrices.
Puedes usar el 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()
agrega un nuevo elemento al final de una matriz.
pop()
elimina un elemento del final de una matriz.
Para agregar un objeto (como una cadena o un número) a una matriz, use:
array.push(toAppend);