javascript - objeto - ¿Cómo añadir algo a una matriz?
eliminar un elemento especifico de un array javascript (30)
¿Cómo agrego un objeto (como una cadena o un número) a una matriz en JavaScript?
Solo desea agregar un fragmento de código para la adición no destructiva de un elemento.
var newArr = oldArr.concat([newEl]);
Deje que la propiedad de longitud de matriz haga el trabajo:
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
Añadir un solo artículo
Para agregar un solo elemento a una matriz, use el método push()
provisto 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 en su lugar, use el método de matriz firstArray.concat(secondArray) :
const fruits = [''banana'', ''pear'', ''apple'']
const allfruits = fruits.concat(''mango'')
console.log(allfruits)
Tenga en cuenta que concat()
no agrega realmente un elemento a la matriz, sino que crea una nueva matriz, que puede asignar a otra variable, o reasignar a la matriz original (declarándola como let
, ya que no puede reasignar una const
):
const fruits = [''banana'', ''pear'', ''apple'']
const allfruits = fruits.concat(''mango'')
console.log(allfruits)
js let fruits = [''banana'', ''pear'', ''apple''] fruits = fruits.concat(''mango'')
Añadir varios elementos
Para agregar un elemento múltiple a una matriz, puede usar push()
llamándolo con múltiples argumentos:
const fruits = [''banana'', ''pear'', ''apple'']
fruits.push(''mango'', ''melon'', ''avocado'')
console.log(fruits)
También puede usar el método firstArray.concat(secondArray) 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.
Publicado originalmente en https://flaviocopes.com/how-to-append-item-to-array/
Agregar un valor a una matriz
Como 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]
Ahora, puede aprovechar la sintaxis de ES6 y simplemente hacer:
let array = [1, 2];
console.log([...array, 3]);
manteniendo la matriz original inmutable.
Algunos análisis comparativos rápidos (cada prueba = 500k elementos agregados y los resultados son promedios de varias ejecuciones) mostraron lo siguiente:
Firefox 3.6 (Mac):
-
arr[arr.length] = b
pequeños:arr[arr.length] = b
es más rápido (300ms vs. 800ms) -
arr.push(b)
grandes:arr.push(b)
es más rápido (500ms vs. 900ms)
Safari 5.0 (Mac):
-
arr[arr.length] = b
pequeños:arr[arr.length] = b
es más rápido (90ms vs. 115ms) -
arr[arr.length] = b
grandes:arr[arr.length] = b
es más rápido (160ms vs. 185ms)
Google Chrome 6.0 (Mac):
- Arreglos pequeños: ¡ No hay diferencia significativa (y Chrome es RÁPIDO! ¡¡Solo ~ 38ms!)
- Arreglos grandes: No hay diferencia significativa (160ms)
Me gusta más la sintaxis de arr.push()
, pero creo que estaría mejor con la versión arr[arr.length]
, al menos en velocidad bruta. Me encantaría ver los resultados de una ejecución de IE sin embargo.
Mis ciclos 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;
}
}
Anexando elementos en una matriz
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]);
}
Con el nuevo operador de expansión ES6, unir dos matrices utilizando 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); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
Esto agrega el contenido de arr2
al final de arr
.
Creo que vale la pena mencionar que push se puede llamar 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); // [''first'', ''second'', ''third'']
Como resultado de esto, puede usar push.apply para agregar una matriz a otra matriz como esta:
arr.push.apply(arr, [''forth'', ''fifth'']);
console.log(arr); // [''first'', ''second'', ''third'', ''forth'', ''fifth'']
El ES5 anotado tiene más información sobre exactamente qué push y apply .
Actualización 2016: con la spread , ya no es necesario que se apply
, como:
arr.push(...[''fourth'', ''fifth'']);
console.log(arr) // [''first'', ''second'', ''third'', ''fourth'', ''fifth'']
El método push()
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 método unshift()
agrega nuevos elementos al principio 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 método concat()
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
Javascript con el estándar ECMAScript 5 , que es compatible con la mayoría de los navegadores ahora, puede usar apply()
para agregar 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 operador de spread
:
"use strict";
let array1 = [3, 4, 5];
let array2 = [1, 2];
array2.push(...array1);
console.log(array2); // [1, 2, 3, 4, 5]
El operador de spread
reemplazará array2.push(...array1);
con array2.push(3, 4, 5);
Cuando el navegador está pensando en la lógica.
Punto extra
Si desea crear otra 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.
No tenemos una función de adición para Array en javascript, pero tenemos push y unshift , imagina que tienes la matriz a continuación:
var arr = [1, 2, 3, 4, 5];
y nos gusta agregar un valor a esta matriz, podemos hacerlo, 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.
Puede usar la función push () si desea agregar valores, por ejemplo, arr.push("Test1", "Test2");
Si tiene una matriz, puede usar concat (), por ejemplo, Array1.concat(Array2)
Si solo tiene un elemento para agregar, también puede probar el método de longitud, por ejemplo array[aray.length] = ''test'';
Puede utilizar la función de push
y push
para anexar dos matrices.
var array1 = [11, 32, 75];
var array2 = [99, 67, 34];
Array.prototype.push.apply(array1, array2);
array2
a array1
. Ahora array1
contiene [11, 32, 75, 99, 67, 34]
. Este código es mucho más simple que escribir for
bucles copien todos y cada uno de los elementos de la matriz.
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"]
Si arr
es una matriz y val
es el valor que desea agregar, use:
arr.push(val);
P.ej
arr = [''a'', ''b'', ''c''];
arr.push(''d'');
console.log(arr);
se registrará:
[''a'', ''b'', ''c'', ''d'']
Si conoce el índice más alto (como el almacenado en una variable "i"), puede hacerlo
myArray[i + 1] = someValue;
Sin embargo, si no lo sabes, entonces puedes usar
myArray.push(someValue);
Como se sugiere en otras respuestas, o puede usar
myArray[myArray.length] = someValue;
Tenga en cuenta que la matriz está basada en cero, por lo que .length devuelve el índice más alto más uno.
También tenga en cuenta que no tiene que agregar en orden y realmente 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 cuando se realiza un bucle a través de un JavaScript para verificar que realmente existe un valor en ese punto.
Esto se puede hacer por algo como lo siguiente:
if(myArray[i] === "undefined"){ continue; }
Si está seguro de que no tiene ceros en la matriz, simplemente puede hacer:
if(!myArray[i]){ continue; }
Por supuesto, asegúrese de que en este caso no use la condición myArray [i] (como algunas personas en Internet sugieren que, tan pronto como i sea mayor que el índice más alto, volverá indefinido, lo que se evalúa como falso)
Si desea agregar un solo valor a una matriz, simplemente use el método de inserción. Agregará un nuevo elemento al final de la matriz.
Pero si pretende agregar varios elementos, entonces almacene los elementos en una nueva matriz y concat la segunda matriz con la primera matriz ... de la forma 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);
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]
Si está utilizando el ES6, puede usar el operador de spread para hacerlo.
var arr = [
"apple",
"banana",
"cherry"
];
var arr2 = [
"dragonfruit",
"elderberry",
"fig"
];
arr.push(...arr2);
Si quieres añadir dos matrices -
var a = [''a'', ''b''];
var b = [''c'', ''d''];
entonces podrías usar:
var c = a.concat(b);
Y si desea agregar el registro g
a la matriz ( var a=[]
), entonces puede usar:
a.push(''g'');
Si solo estás 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);
Escupirá:
"1,2,3"
"4,5,6"
"1,2,3,4,5,6"
El concat no afecta a ar1
y ar2
menos que sea reasignado, por ejemplo:
ar1 = ar1.concat(ar2);
alert(ar1);
Mostrará:
"1,2,3,4,5,6"
Mucha información here
Usted .push () ese valor en. Ejemplo: array.push (valor);
Utilice concat
:
a = [1, 2, 3];
b = [3, 4, 5];
a = a.concat(b);
a
ahora contiene todos los elementos, [1, 2, 3, 3, 4, 5]
.
Referencia: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/concat
concat()
supuesto, concat()
se puede utilizar con matrices bidimensionales. No se requiere bucle.
var a = [[1, 2], [3, 4]];
var b = [["a", "b"], ["c", "d"]];
b = b.concat (a);
alerta (b [2] [1]); // resultado 2
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 un uso de matriz:
array.push(toAppend);
Añadir elemento único
//Append at first
arrName.push(''newName1'');
//Append at last
arrName.unshift(''newName1'');
//Append at index 1
arrName.splice(1, 0,''newName1'');
//1: index number, 0: number of element to remove, newName1: new element
//Append at index 3
arrName[3] = ''newName1'';
Añadir elemento múltiple
//Append from index number 1
arrName.splice(1, 0,''newElemenet1'', ''newElemenet2'', ''newElemenet3'');
//1: index number from where append start,
//0: number of element to remove,
//newElemenet1,2,3: new elements
Anexar matriz
//join two or more array
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different array which is to be append to the existing array
Hay un par de maneras de agregar una matriz en JavaScript:
1) El método push()
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 método unshift()
agrega uno o más elementos al principio 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 método concat()
se utiliza para combinar 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 propiedad .length
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 método splice()
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"]
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'' ]
Use la función push()
para agregar a una matriz:
// initialize array
var arr = [
"Hi",
"Hello",
"Bonjour"
];
// append new value to the array
arr.push("Hola");
console.log(arr);
Imprimirá
["Hi", "Hello", "Bonjour", "Hola"]
Puede usar la función push()
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]);
}
Imprimirá
Hi
Hello
Bonjour
Hola
Salut
Hey
Actualizar
Si desea agregar los elementos de una matriz a otra, puede usar firstArray.concat(secondArray)
:
var arr = [
"apple",
"banana",
"cherry"
];
arr = arr.concat([
"dragonfruit",
"elderberry",
"fig"
]);
console.log(arr);
Imprimirá
["apple", "banana", "cherry", "dragonfruit", "elderberry", "fig"]