En ES6, vous pouvez faire comme ceci.
var key = "name";
var person = {[key]:"John"}; // same as var person = {"name" : "John"}
console.log(person); // should print Object { name="John"}
var key = "name";
var person = {[key]:"John"};
console.log(person); // should print Object { name="John"}
C'est ce qu'on appelle des noms de propriétés calculés, et c'est mis en œuvre en utilisant la notation des parenthèses (crochets). []
Exemple : { [variableName] : someValue }
À partir d'ECMAScript 2015, la syntaxe de l'initialisateur d'objet supporte également supporte également les noms de propriétés calculés. Cela vous permet de mettre une expression entre crochets [], qui sera calculée et utilisée comme nom de propriété.
Pour ES5, essayez quelque chose comme ceci
var yourObject = {};
yourObject[yourKey] = "yourValue";
console.log(yourObject );
exemple :
var person = {};
var key = "name";
person[key] /* this is same as person.name */ = "John";
console.log(person); // should print Object { name="John"}
var person = {};
var key = "name";
person[key] /* this is same as person.name */ = "John";
console.log(person); // should print Object { name="John"}
677 votes
La solution dans ES6 est de mettre la variable entre crochets afin de l'évaluer.
var key = "happyCount"; myArray.push({ [key]: someValueArray });
0 votes
@DanCron C'est très bien, mais quand est-ce que plus de 99 % des "navigateurs" de la base d'utilisateurs seront compatibles avec ES6 ?
8 votes
@Jake Le seul navigateur qui ne supporte pas actuellement cette fonctionnalité es6 est IE11 : kangax.github.io/compat-table/es6/
4 votes
@Jake C'est un bon point. Une solution possible est d'utiliser babel pour transpiler ES6 en ES5.
0 votes
@HunterMcMillen Vous ne pouvez normalement pas supposer que tout le monde utilise la dernière version de n'importe quel navigateur - un nombre significatif d'utilisateurs du web ont un navigateur considérablement dépassé. L'utilisation de constructions spécifiques à ES6 aura pour effet de casser votre site pour eux.
3 votes
@Jake C'est exactement à quoi sert babel. Comme Dan Cron le mentionne ci-dessus.
3 votes
Jake Comme le dit Hunter, il est préférable de ne pas coder pour les utilisateurs d'ES5. Si vous devez prendre en charge des navigateurs plus anciens, utilisez pollyfill et transpile. Nous sommes en 2018, pas en 2009, il faut vraiment passer à autre chose.