web-dev-qa-db-fra.com

Comment ajouter un objet à un tableau

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.

  1. Comment puis-je sauvegarder un objet dans un tableau?
  2. Comment puis-je mettre un objet dans un tableau et l'enregistrer dans une variable?
276
naser

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']
581
John Strickler
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.

54
santhosh

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.

52
Gabi Purcaru

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);
19
Aayushi
  • JavaScript est sensible à la casse . L'appel de new array() et new object() lancera un ReferenceError car ils n'existent pas.
  • Il est préférable d'éviter new Array() en raison de son comportement sujet à l'erreur .
    À la place, assignez le nouveau tableau avec = [val1, val2, val_n]. Pour les objets, utilisez = {}.
  • Il y a beaucoup de façons d’agrandir un tableau (comme le montre John réponse ), mais le moyen le plus sûr serait d’utiliser 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.
  • C'est également une bonne pratique de figer l'objet ainsi que le nouveau tableau afin d'éviter les mutations involontaires. Un objet gelé n'est ni modifiable ni extensible (superficiellement).

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.
19
Boghyon Hoffmann

É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...
8
Sam

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();
6
Raynos

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;
4
Po Po
/* 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());
}
3
antelove
a=[];
a.Push(['b','c','d','e','f']);
3
harjinder singh

La façon dont j'ai créé un objet avec liste automatique:

var list = [];

function saveToArray(x) {
    list.Push(x);
};

function newObject () {
    saveToArray(this);
};
2
Tadas Stundys

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
0
josh.trow