Comment utiliser la valeur de la variable a
comme clé pour rechercher une propriété? Je veux pouvoir dire: b["whatever"]
et avoir ce retour 20:
var a = "whatever";
var b = {a : 20}; // Want this to assign b.whatever
alert(b["whatever"]); // so that this shows 20, not `undefined`
Je demande s'il est possible, lors de la création de b
, de le contenir "whatever":20
au lieu de a:20
où "quel que soit" est lui-même dans une variable. Peut-être qu'une eval
pourrait être utilisée?
var a = "whatever";
var b = {};
b[a] = 20;
alert(b["whatever"]); // shows 20
Cela fonctionne dans Firefox 39 et Chrome 44. Je ne connais pas les autres navigateurs. De plus, cela ne fonctionne pas dans nodejs v0.12.7.
var a = "whatever";
var b = { [a]: 20 };
console.log(b["whatever"]); // shows 20
Autrement dit, pour interpoler une variable, mettez-la entre parenthèses.
Je ne sais pas si cela fait partie d'une norme. À l'origine, j'ai vu cette syntaxe ici: https://hacks.mozilla.org/2015/07/es6-in-depth-classes/ où l'auteur a défini:
[functionThatReturnsPropertyName()] (args) { ... }
Je ne sais pas non plus si vous devriez utiliser cette syntaxe. Ce n'est pas largement connu. Les autres membres de votre équipe pourraient ne pas comprendre le code.
Excellente question. J'ai eu du mal à comprendre cela avec un trait de soulignement, mais la réponse est simple:
var a = "whatever";
var b = {a : 20};
var array = [a, b]
var answer = _.object([[array]])// {whatever: {a:20}}//NOTICE THE DOUBLE SET OF BRACKETS AROUND [[array]]
J'espère que ça aide!
var a = "whatever";
var b = {a : 20};
b[a] = 37;
alert(b["whatever"]); // 37
'a'
est une chaîne avec la valeur 'a'
. a
est une variable avec la valeur 'whatever'
.
Essaye ça:
var a = "whatever";
var c = "something";
var b = {whatever : 20, something: 37};
alert(b[a]); // Shows 20
alert(b[c]); // Shows 37
Voici le violon .
Ou, si je comprends bien les commentaires ci-dessous, essayez ceci:
var a = "whatever";
var b = {a : 20};
alert(b.a); // Shows 20
Pour afficher toutes les options, je veux mentionner le CoffeeScript , ce qui est:
var a = "whatever";
var b = (
obj = {},
obj["" + a] = 20,
obj
);
alert(b.whatever); // 20
Bien que je préfère:
var a = "whatever";
var b = {};
b[a] = 20;
alert(b.whatever); // 20
Et si c'est
var a = "whatever.other";
var b = {a:20};
expected output b["whatever"]["other"] should return 20