46 votes

Utiliser une chaîne concaténée (dynamique) comme clé d'objet JavaScript ?

var test = "test123"
var test123 ={
    "key" + test: 123
}

Ce code ne fonctionne pas. Quel est le problème avec "clé" + test ?

71voto

Ben Points 2510

Avec ES6, vous pouvez définir des clés dynamiques dans un littéral d'objet :

 const test = "test123"
const test123 = { [`key${test}`]: 123 };  //{ keytest123: 123 }

12voto

papirtiger Points 1870

Vous pouvez mais pas avec la notation littérale (avant ES6).

 var test123 = {};
test123["foo" + "bar"] = 'baz';

test123.foobar === 'baz'; // true

3voto

Krizz Points 7273

Votre code est équivalent à test123.("key" + test) = 123 ce qui peut mieux vous aider à comprendre pourquoi il est faux.

Vous avez besoin de la ["name"] pour pouvoir accéder aux champs par leur nom dans la chaîne. Les autres notations (les vôtres et celles de . ) nécessitent des identifiants.

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