189 votes

Ajouter à un objet

J'ai un objet qui contient des alertes et des informations à leur sujet:

 var alerts = { 
    1: {app:'helloworld','message'},
    2: {app:'helloagain',message:'another message'}
}
 

En plus de cela, j'ai une variable qui indique le nombre d'alertes, alertNo . Ma question est la suivante: lorsque je vais ajouter une nouvelle alerte, existe-t-il un moyen de l'ajouter à l'objet alerts ?

250voto

Andreas Grech Points 39188

Que diriez-vous de stocker les alertes en tant qu'enregistrements dans un tableau au lieu des propriétés d'un seul objet?

 var alerts = [ 
    {num : 1, app:'helloworld',message:'message'},
    {num : 2, app:'helloagain',message:'another message'} 
]
 

Et puis pour en ajouter un, utilisez simplement push :

 alerts.push({num : 3, app:'helloagain_again',message:'yet another message'});
 

61voto

respectTheCode Points 6453

jQuery $.extend(obj1, obj2) fusionnerait 2 objets pour vous, mais vous devriez vraiment utiliser un tableau.

 var alertsObj = {
    1: {app:'helloworld','message'},
    2: {app:'helloagain',message:'another message'}
};

var alertArr = [
    {app:'helloworld','message'},
    {app:'helloagain',message:'another message'}
];

var newAlert = {app:'new',message:'message'};

$.extend(alertsObj, newAlert);
alertArr.push(newAlert);
 

10voto

dlamblin Points 14546

Vous devriez vraiment aller avec le tableau des suggestions d'alertes, mais sinon, ajouter à l'objet que vous avez mentionné ressemblerait à ceci:

 alerts[3]={"app":"goodbyeworld","message":"cya"};
 

Mais comme vous ne devriez pas utiliser de nombres littéraux car les noms citent tout et vont avec

 alerts['3']={"app":"goodbyeworld","message":"cya"};
 

ou vous pouvez en faire un tableau d'objets.

Accéder à cela ressemble à

 alerts['1'].app
=> "helloworld"
 

5voto

Peter Bailey Points 62125

Avez-vous la possibilité de changer la structure la plus externe en un tableau? Donc, cela ressemblerait à ceci

 var alerts = [{"app":"helloworld","message":null},{"app":"helloagain","message":"another message"}];
 

Alors, quand vous en avez besoin, vous pouvez simplement le pousser sur le tableau

 alerts.push( {"app":"goodbyeworld","message":"cya"} );
 

Ensuite, vous avez un index intégré de base zéro indiquant comment les erreurs sont énumérées.

-1voto

HM2K Points 361

Essaye ça:

 alerts.splice(0,0,{"app":"goodbyeworld","message":"cya"});
 

Ca marche plutôt bien, ça va l'ajouter au début du tableau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X