Javascript一次声明多个动态生成密钥

时间:2017-11-07 12:15:11

标签: javascript ecmascript-6

我正在尝试动态创建以下对象

let foo = {
    bar: {
        data: [1, 2, 3]
    }
}

有没有办法纠正这个陈述来达到这个目的?

let property = bar
foo = { [`${property}/data`]: [1, 2, 3] }

2 个答案:

答案 0 :(得分:3)

您只能property获取computed property name并将其余内容作为对象。



var property = 'bar',
    foo = { [property]: { data: [1, 2, 3] } };

console.log(foo);




对于双嵌套对象,您也可以将其他数据属性作为变量。



var property0 = 'bar',
    property1 = 'data',
    foo = { [property0]: { [property1]: [1, 2, 3] } };

console.log(foo);




答案 1 :(得分:1)

[${property}/data]不会在里面创建嵌套对象。

无论如何,bar未定义,将引发错误。

使用以下方法:

let property = 'bar';

let foo = { [property]: { 
    data: [1,2,3],
  } 
};

console.log(foo);