我有这样的代码。
var key = "anything";
var object = {
key: "key attribute"
};
我想知道是否有办法将key
替换为“任何东西”。
像
var object = {
"anything": "key attribute"
};
答案 0 :(得分:128)
在ES6中,使用 computed property names 。
const key = "anything";
const object = {
[key]: "key attribute"
// ^^^^^ COMPUTED PROPERTY NAME
};
请注意key
周围的方括号。您实际上可以在方括号中指定任何表达式,而不仅仅是变量。
答案 1 :(得分:98)
是。您可以使用:
var key = "anything";
var json = { };
json[key] = "key attribute";
如果你在编写程序时有手头的值,那么只需使用你的第二种方法。
答案 2 :(得分:9)
这应该可以解决问题:
var key = "anything";
var json = {};
json[key] = "key attribute";
答案 3 :(得分:4)
在现代Javascript(ECMAScript 6)上,您可以使用方括号来隐藏变量:
var key = "anything";
var json = {
[key]: "key attribute"
};
答案 4 :(得分:2)
解决方案:
var key = "anything";
var json = {};
json[key] = "key attribute";
答案 5 :(得分:-1)
闭包对此很有用。
function keyValue(key){
return function(value){
var object = {};
object[key] = value;
return object;
}
}
var key = keyValue(key);
key(value);
答案 6 :(得分:-1)
最近需要一个解决方案如何设置传递动态json键值的cookie。 使用https://github.com/js-cookie/js-cookie#json,可以轻松完成。 想要在cookie中存储用户的每个选定选项值,因此在标签或浏览器关闭的情况下不会丢失。
var json = {
option_values : {}
};
$('option:selected').each(function(index, el) {
var option = $(this);
var optionText = option.text();
var key = 'option_' + index;
json.option_values[key] = optionText;
Cookies.set('option_values', json, { expires: 7 } );
});
然后,您可以使用
检索每个页面加载上的每个Cookie键值Cookies.getJSON('option_values');
答案 7 :(得分:-2)
嗯,没有“直接”的方法来做到这一点......
但是应该这样做:
json[key] = json.key;
json.key = undefined;
它有点棘手,但嘿,它有效!