¿Cómo puedo añadir un objeto (como una cadena o un número) a una matriz en JavaScript?
Utiliza el método Array.prototype.push
para añadir valores a un array:
begin snippet: js hide: false console: true babel: false -->
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
Puedes utilizar la función push()
para añadir más de un valor a un array en una sola llamada:
begin snippet: js hide: false console: true babel: false -->
// 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]);
}
Actualización
Si quieres añadir los elementos de un array a otro array, puedes utilizar firstArray.concat(secondArray)
:
begin snippet: js hide: false console: true babel: false -->
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Actualización
Sólo una adición a esta respuesta, si quieres añadir cualquier valor al principio de un array, es decir, al primer índice, puedes utilizar Array.prototype.unshift
para este propósito.
begin snippet: js hide: false console: true babel: false -->
var arr = [1, 2, 3];
arr.unshift(0);
console.log(arr);
También permite añadir varios valores a la vez, al igual que push
.
Si sólo está añadiendo una sola variable, entonces push()
funciona bien. Si necesita añadir otro array, utilice concat()
:
begin snippet: js hide: false console: true babel: false -->
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 a ar1
y ar2
a menos que se reasigne, por ejemplo:
var ar1 = [1, 2, 3];
var ar2 = [4, 5, 6];
ar1 = ar1.concat(ar2);
alert(ar1);
Mucha información aquí.
Unas rápidas pruebas de referencia (cada prueba = 500k elementos añadidos 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 (300ms vs. 800ms)arr.push(b)
es más rápido (500ms vs. 900ms)Safari 5.0 (Mac):
arr[arr.length] = b
es más rápido (90ms vs. 115ms)arr[arr.length] = b
es más rápido (160ms frente a 185ms)Google Chrome 6.0 (Mac):
Me gusta más la sintaxis arr.push()
, pero creo que sería mejor la versión arr[arr.length]
, al menos en velocidad bruta. Sin embargo, me gustaría ver los resultados de una ejecución en 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;
}
}