Ответ 1
var a = "whatever";
var b = {};
b[a] = 20;
alert(b["whatever"]); // shows 20
Если у меня есть:
var a = "whatever";
var b = {a : 20};
alert(b["a"]); // Shows 20
Как я могу вставить значение переменной a
в качестве ключа, а не строку "a"? Я хочу сказать: b["whatever"]
и вернуть это 20.
Предполагая этот код:
var a = "whatever";
var b = {a : 20};
Я спрашиваю, возможно ли после создания b
содержать "whatever":20
вместо a:20
. Может быть, можно использовать eval
?
var a = "whatever";
var b = {};
b[a] = 20;
alert(b["whatever"]); // shows 20
Это работает в Firefox 39 и Chrome 44. Не знаю о других браузерах. Также он не работает в nodejs v0.12.7.
var a = "whatever";
var b = { [a]: 20 };
console.log(b["whatever"]); // shows 20
То есть, чтобы интерполировать переменную, заключите ее в скобки.
Я не уверен, что это часть любого стандарта. Первоначально я видел такой синтаксис здесь: https://hacks.mozilla.org/2015/07/es6-in-depth-classes/, где автор определил:
[functionThatReturnsPropertyName()] (args) { ... }
Я также не уверен, следует ли использовать этот синтаксис. Это не широко известно. Другие члены вашей команды могут не понимать код.
Отличный вопрос. У меня было время попытаться понять это с подчеркиванием, но ответ не мог быть более простым:
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]]
Надеюсь, это поможет!
var a = "whatever";
var b = {a : 20};
b[a] = 37;
alert(b["whatever"]); // 37
'a'
- это строка со значением 'a'
. a
- это переменная со значением 'whatever'
.
Попробуйте следующее:
var a = "whatever";
var c = "something";
var b = {whatever : 20, something: 37};
alert(b[a]); // Shows 20
alert(b[c]); // Shows 37
Вот fiddle.
Или, если я правильно понимаю из приведенных ниже комментариев, попробуйте следующее:
var a = "whatever";
var b = {a : 20};
alert(b.a); // Shows 20
Чтобы показать все параметры, я хочу указать CoffeeScript способ:
var a = "whatever";
var b = (
obj = {},
obj["" + a] = 20,
obj
);
alert(b.whatever); // 20
Хотя я предпочитаю:
var a = "whatever";
var b = {};
b[a] = 20;
alert(b.whatever); // 20