Comment puis-je ajouter n objet à un tablea (en javascript ou jquery)? Par exemple, quel est le problème avec ce code?
function(){
var a = new array();
var b = new object();
a[0]=b;
}
Je voudrais utiliser ce code pour enregistrer de nombreux objets dans le tableau de function1 et appeler function2 pour utiliser l'objet dans le tableau.
Mettez n'importe quoi dans un tableau en utilisant Array.Push ().
var a=[], b={};
a.Push(b);
// a[0] === b;
Informations supplémentaires sur les tableaux
Ajouter plus d'un article à la fois
var x = ['a'];
x.Push('b', 'c');
// x = ['a', 'b', 'c']
Ajouter des éléments au début d'un tablea
var x = ['c', 'd'];
x.unshift('a', 'b');
// x = ['a', 'b', 'c', 'd']
Ajoute le contenu d'un tableau à un autre
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)
Créer un nouveau tableau à partir du contenu de deux tableaux
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']
var years = [];
for (i= 2015;i<=2030;i=i+1)
{
years.Push({operator : i})
}
ici tableau années est d'avoir des valeurs comme
years[0]={operator:2015}
years[1]={operator:2016}
ça continue comme ça.
Tout d'abord, il n'y a pas de object
ni array
. Il y a Object
et Array
. Deuxièmement, vous pouvez faites cela:
a = new Array();
b = new Object();
a[0] = b;
Maintenant, a
sera un tableau avec b
comme seul élément.
En utilisant la notation ES6
, vous pouvez faire quelque chose comme ceci:
Pour ajouter, vous pouvez utiliser le opérateur de propagation comme ceci:
var arr1 = [1,2,3]
var obj = 4
var newData = [...arr1, obj] // [1,2,3,4]
console.log(newData);
new array()
et new object()
lancera un ReferenceError
car ils n'existent pas.new Array()
en raison de son comportement sujet à l'erreur .= [val1, val2, val_n]
. Pour les objets, utilisez = {}
.concat
au lieu de Push
. concat
renvoie un nouveau tableau, en laissant le tableau d'origine intact. Push
modifie le tableau appelant qui devrait être évité , en particulier si le tableau est défini globalement.En appliquant ces points et pour répondre à vos deux questions, vous pouvez définir une fonction comme celle-ci:
function appendObjTo(thatArray, newObj) {
const frozenObj = Object.freeze(newObj);
return Object.freeze(thatArray.concat(frozenObj));
}
Usage:
// 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.
Élargir la réponse de Gabi Purcaru pour y inclure une réponse au numéro 2.
a = new Array();
b = new Object();
a[0] = b;
var c = a[0]; // c is now the object we inserted into a...
obejct
est clairement une faute de frappe. Mais object
et array
ont tous deux besoin de lettres majuscules.
Vous pouvez utiliser de courtes mains pour new Array
et new Object
, il s’agit de []
et {}
Vous pouvez envoyer des données dans le tableau en utilisant .Push
. Cela l'ajoute à la fin du tableau. ou vous pouvez définir un index pour contenir les données.
function saveToArray() {
var o = {};
o.foo = 42;
var arr = [];
arr.Push(o);
return arr;
}
function other() {
var arr = saveToArray();
alert(arr[0]);
}
other();
La réponse alternative est la suivante.
si vous avez un tableau comme ceci: var contacts = [bob, mary];
et vous voulez mettre un autre tableau dans ce tableau, vous pouvez le faire de cette façon:
Déclarer le constructeur de la fonction
function add (firstName,lastName,email,phoneNumber) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.phoneNumber = phoneNumber;
}
faire l'objet à partir de la fonction:
var add1 = new add("Alba","Fas","[email protected]","[098] 654365364");
et ajoutez l'objet dans le tableau:
contacts[contacts.length] = add1;
/* 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']);
La façon dont j'ai créé un objet avec liste automatique:
var list = [];
function saveToArray(x) {
list.Push(x);
};
function newObject () {
saveToArray(this);
};
Vous rencontrez un problème de portée si vous utilisez votre code en tant que tel. Vous devez le déclarer en dehors des fonctions si vous prévoyez de l'utiliser entre elles (ou si vous l'appelez, transmettez-le en tant que paramètre).
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