有没有办法在JavaScript对象文字中使用变量键?


80

我有这样的代码。

var key = "anything";   
var object = {   
    key: "key attribute"  
};

我想知道是否有办法key用“任何东西”代替它。

喜欢

var object = {  
    "anything": "key attribute"     
};

Answers:


192

在ES6中,使用计算的属性名称

const key = "anything";   

const object = {   
    [key]: "key attribute"
//  ^^^^^  COMPUTED PROPERTY NAME
};

注意周围的方括号key。实际上,您可以在方括号中指定任何表达式,而不仅仅是变量。


5
以及铬。最简单,最好的答案(y)
Anum Sheraz'17

1
这对ES6很好,但是对于较旧的版本(IE11将在上面的代码中崩溃)
pascalzon '18

116

是。您可以使用:

var key = "anything";
var json = { };
json[key] = "key attribute";

或者,如果在编写程序时手头有值,则只需使用第二种方法。



12

这应该可以解决问题:

var key = "anything";

var json = {};

json[key] = "key attribute";

但是他想在对象文字的上下文中执行此操作。


-2

封闭件对此非常有用。

function keyValue(key){
  return function(value){
    var object = {};
    object[key] = value;
    return object;
  }
}

var key = keyValue(key);
key(value);

封闭仅仅是这里使用的机制。这个概念是HOF。

1
HOF =高阶函数。
瑞克

-2

最近需要一种解决方案,该方法如何设置传递动态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');

-3

嗯,没有一种“直接”的方法可以做到这一点。

但这应该做到:

json[key] = json.key;
json.key = undefined;

有点棘手,但嘿,它有效!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.