eliminar - lista de objetos javascript
Cómo agregar un objeto a una matriz (13)
¿Cómo puedo agregar un objeto a una matriz (en javascript o jquery)? Por ejemplo, ¿cuál es el problema con este código?
function(){
var a = new array();
var b = new object();
a[0]=b;
}
Me gustaría usar este código para guardar muchos objetos en la matriz de function1 y llamar a function2 para usar el objeto en la matriz.
- ¿Cómo puedo guardar un objeto en una matriz?
- ¿Cómo puedo poner un objeto en una matriz y guardarlo en una variable?
Ampliando la respuesta de Gabi Purcaru para incluir una respuesta al número 2.
a = new Array();
b = new Object();
a[0] = b;
var c = a[0]; // c is now the object we inserted into a...
En alternativ respuesta es la siguiente.
si tiene una matriz como esta: var contacts = [bob, mary];
y si quieres poner otra matriz en esta matriz, puedes hacerlo de esta manera:
Declarar la función del constructor.
function add (firstName,lastName,email,phoneNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.phoneNumber = phoneNumber;
}
Realiza el objeto desde la función:
var add1 = new add("Alba","Fas","[email protected]","[098] 654365364");
y agrega el objeto a la matriz:
contacts[contacts.length] = add1;
En primer lugar, no hay ningún object
o array
. Hay Object
y Array
. En segundo lugar, puedes hacer eso:
a = new Array();
b = new Object();
a[0] = b;
Ahora a
será una matriz con b
como su único elemento.
La forma en que hice creador de objetos con la lista automática:
var list = [];
function saveToArray(x) {
list.push(x);
};
function newObject () {
saveToArray(this);
};
Ponga cualquier cosa en una matriz usando Array.push ().
var a=[], b={};
a.push(b);
// a[0] === b;
Información adicional en Arrays
Agrega más de un artículo a la vez
var x = [''a''];
x.push(''b'', ''c'');
// x = [''a'', ''b'', ''c'']
Agregar elementos al principio de una matriz
var x = [''c'', ''d''];
x.unshift(''a'', ''b'');
// x = [''a'', ''b'', ''c'', ''d'']
Añade los contenidos de una matriz a otra.
var x = [''a'', ''b'', ''c''];
var y = [''d'', ''e'', ''f''];
x.push.apply(x, y);
// x = [''a'', ''b'', ''c'', ''d'', ''e'', ''f'']
// y = [''d'', ''e'', ''f''] (remains unchanged)
Crear una nueva matriz a partir del contenido de dos matrices
var x = [''a'', ''b'', ''c''];
var y = [''d'', ''e'', ''f''];
var z = x.concat(y);
// x = [''a'', ''b'', ''c''] (remains unchanged)
// y = [''d'', ''e'', ''f''] (remains unchanged)
// z = [''a'', ''b'', ''c'', ''d'', ''e'', ''f'']
Puedes usar este prototipo de javascript como este:
Array.prototype.push.apply(array1, array2,array3);
=> array1 contiene el resto de ellos
Se está ejecutando en un problema de alcance si utiliza su código como tal. Debe declararlo fuera de las funciones si planea usarlo entre ellas (o si lo llama, páselo como parámetro).
var a = new Array();
var b = new Object();
function first() {
a.push(b);
// Alternatively, a[a.length] = b
// both methods work fine
}
function second() {
var c = a[0];
}
// code
first();
// more code
second();
// even more code
Usando la notación ES6
, puedes hacer algo como esto:
var arr1 = [1,2,3]
var obj = 4
Para añadir puede usar el operador de propagación de esta manera:
var newData = [...arr1, obj] // [1,2,3,4]
obejct
es claramente un error tipográfico. Pero tanto el object
como la array
necesitan letras mayúsculas.
Puede usar las manos cortas para la new Array
y el new Object
estos son []
y {}
Puede insertar datos en la matriz utilizando .push
. Esto lo agrega al final de la matriz. o puede establecer un índice para contener los datos.
function saveToArray() {
var o = {};
o.foo = 42;
var arr = [];
arr.push(o);
return arr;
}
function other() {
var arr = saveToArray();
alert(arr[0]);
}
other();
/* array literal */
var aData = [];
/* object constructur */
function Data(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
this.fullname = function() {
return (this.firstname + " " + this.lastname);
};
}
/* store object into array */
aData.push(new Data("Jhon", "Doe"));
aData.push(new Data("Anna", "Smith"));
aData.push(new Data("Black", "Pearl"));
/* convert array of object into string json */
var jsonString = JSON.stringify(aData);
document.write(jsonString);
/* loop arrray */
for (var x in aData) {
alert(aData[x].fullname());
}
a=[];
a.push([''b'',''c'',''d'',''e'',''f'']);
var years = [];
for (i= 2015;i<=2030;i=i+1)
{
years.push({operator : i})
}
Aquí arraigo años está teniendo valores como
years[0]={operator:2015}
years[1]={operator:2016}
Sigue así.
- JavaScript distingue entre case-sensitive . Al llamar a la
new array()
y alnew object()
se lanzará un error deReferenceError
ya que no existen. - Es mejor evitar el
new Array()
debido a su comportamiento propenso a errores .
En su lugar, asigne la nueva matriz con= [val1, val2, val_n]
. Para objetos, usa= {}
. - Hay muchas maneras de extender una matriz (como se muestra en la answer de John), pero la forma más segura sería usar
concat
lugar depush
.concat
devuelve una nueva matriz, dejando la matriz original sin tocar.push
muta la matriz de llamada, lo que debe evitarse , especialmente si la matriz se define globalmente. - También es una buena práctica freeze el objeto así como la nueva matriz para evitar mutaciones involuntarias. Un objeto congelado no es mutable ni extensible (superficialmente).
Aplicando esos puntos y para responder a sus dos preguntas, podría definir una función como esta:
function appendObjTo(thatArray, newObj) {
const frozenObj = Object.freeze(newObj);
return Object.freeze(thatArray.concat(frozenObj));
}
Uso:
// Given
const myArray = ["A", "B"];
// "save it to a variable"
const newArray = appendObjTo(myArray, {hello: "world!"});
// returns: ["A", "B", {hello: "world!"}]. myArray did not change.