1963 votes

Comment ajouter une paire clé/valeur à un objet JavaScript ?

Voici mon objet littéral :

var obj = {key1: value1, key2: value2};

Comment puis-je ajouter un champ key3 con value3 à l'objet ?

5 votes

Eh bien, toute la question des tableaux associatifs en JS est bizarre, parce que vous pouvez faire ça... dreaminginjavascript.wordpress.com/2008/06/27/

2 votes

@Nosredna - le fait est que les tableaux associatifs n'existent pas en javascript. Dans cet article, il ajoute des propriétés d'objet à un objet tableau, mais celles-ci ne font pas vraiment partie du "tableau".

2 votes

Existe-t-il un moyen de définir de manière conditionnelle des paires clé:valeur dans un objet littéral avec les futures implémentations ES+ ?

3001voto

Ionuț G. Stan Points 62482

Il existe deux façons d'ajouter de nouvelles propriétés à un objet :

var obj = {
    key1: value1,
    key2: value2
};

En utilisant la notation par points :

obj.key3 = "value3";

En utilisant la notation des crochets :

obj["key3"] = "value3";

La première forme est utilisée lorsque vous connaissez le nom de la propriété. La deuxième forme est utilisée lorsque le nom de la propriété est déterminé dynamiquement. Comme dans cet exemple :

var getProperty = function (propertyName) {
    return obj[propertyName];
};

getProperty("key1");
getProperty("key2");
getProperty("key3");

A réel Un tableau JavaScript peut être construit en utilisant l'un ou l'autre :

La notation littérale Array :

var arr = [];

La notation du constructeur de tableau :

var arr = new Array();

0 votes

Oui Nosredna, vous avez raison. J'ai corrigé après votre commentaire sur la réponse de Seth. Je connais les implications, c'était juste l'inertie de mon esprit :)

4 votes

Obj est un objet. La partie entre (et incluant) les accolades est le littéral objet. obj n'est pas un littéral objet.

0 votes

...bien qu'il soit recommandé (également par JSLint) d'utiliser la première notation du constructeur Array... Juste pour que ce soit clair...

88voto

seth Points 18409

Vous pouvez utiliser l'une ou l'autre des méthodes suivantes (à condition que key3 soit la clé que vous voulez utiliser)

arr[ 'key3' ] = value3;

ou

arr.key3 = value3;

Si key3 est une variable, alors vous devez faire :

var key3 = 'a_key';
var value3 = 3;
arr[ key3 ] = value3;

Après cela, la demande arr.a_key retournerait la valeur de value3 un littéral 3 .

9 votes

Il ne s'agit pas d'un tableau mais d'un objet. Les tableaux JS ne sont indexés que par des entiers. Essayez de faire arr.length et il retournera 0. Plus de lecture à ce sujet : less-broken.com/blog/2010/12/

1 votes

Le lien de @DevAntoine n'est pas accessible. Si vous voulez obtenir la "longueur" de ce type de tableau, utilisez : Object.keys(your_array).length Pour en savoir plus sur ce problème, voir : stackoverflow.com/questions/21356880/array-length-returns-0

1 votes

On peut aussi simplement écraser la propriété de longueur du tableau qu'on crée. La définition de var myarray["length"] = numArrayFields résout ce problème pour moi. En supposant que vous gardiez trace du nombre de champs que vous ajoutez à votre tableau d'une manière ou d'une autre.

32voto

Robert Koritnik Points 45499
arr.key3 = value3;

parce que votre arr n'est pas vraiment un tableau... C'est un objet prototype. Le vrai tableau serait :

var arr = [{key1: value1}, {key2: value2}];

mais ce n'est toujours pas correct. En fait, ça devrait l'être :

var arr = [{key: key1, value: value1}, {key: key2, value: value2}];

28voto

Vicky Points 2492
var employees = []; 
employees.push({id:100,name:'Yashwant',age:30});
employees.push({id:200,name:'Mahesh',age:35});

35 votes

Ceci est pour les tableaux, pas pour les objets.

7voto

bdukes Points 54833

Votre exemple montre un objet, pas un tableau. Dans ce cas, la meilleure façon d'ajouter un champ à un objet est de l'assigner, comme suit :

arr.key3 = value3;

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