106 votes

Comment définir dynamiquement les valeurs d'un objet Javascript ?

Il est difficile d'expliquer l'affaire par des mots, laissez-moi vous donner un exemple :

var myObj = {
    'name': 'Umut',
    'age' : 34
};

var prop = 'name';
var value = 'Onur';

myObj[name] = value; // This does not work

eval('myObj.' + name) = value;   //Bad coding ;)

Comment puis-je définir une propriété variable avec une valeur variable dans un objet JavaScript ?

165voto

Matt Greer Points 29401
myObj[prop] = value;

Cela devrait fonctionner. Tu as confondu le nom de la variable et sa valeur. Mais indexer un objet avec des chaînes de caractères pour accéder à ses propriétés fonctionne bien en JavaScript.

52voto

bcoughlan Points 6304
myObj.name=value

ou

myObj['name']=value     (Quotes are required)

Les deux sont interchangeables.

Edit : Je suppose que tu voulais dire myObj[prop] = value au lieu de myObj[name] = value. La deuxième syntaxe fonctionne bien : http://jsfiddle.net/waitinforatrain/dNjvb/1/

5voto

timw4mail Points 842

Vous pouvez obtenir la propriété de la même manière que vous l'avez définie.

foo = {
 bar: "value"
}

Vous définissez la valeur foo["bar"] = "baz";

Pour obtenir la valeur foo["bar"]

retournera "baz".

5voto

Vous pourriez également créer quelque chose qui serait similaire à un objet de valeur (vo) ;

SomeModelClassNameVO.js ;

function SomeModelClassNameVO(name,id) {
    this.name = name;
    this.id = id;
}

que vous pouvez simplement faire ;

   var someModelClassNameVO = new someModelClassNameVO('name',1);
   console.log(someModelClassNameVO.name);

3voto

NT3RP Points 6566

Lorsque vous créez un objet myObj comme vous l'avez fait, considérez-le plutôt comme un dictionnaire. Dans ce cas, il a deux clés, name et age .

Vous pouvez accéder à ces dictionnaires de deux manières :

  • Comme un tableau (par exemple myObj[name] ) ; ou
  • Comme une propriété (par exemple myObj.name ) ; notez que certaines propriétés sont réservées, la première méthode est donc préférable.

Vous devriez pouvoir y accéder en tant que propriété sans aucun problème. Cependant, pour y accéder en tant que tableau, vous devrez traiter la clé comme une chaîne.

myObj["name"]

Sinon, javascript supposera que name est une variable, et puisque vous n'avez pas créé une variable appelée name il ne sera pas en mesure d'accéder à la clé que vous attendez.

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