JavaScript对象的键作为变量

4

我有一个对象:

let object1 = { a: 'one', b: 'two', c: 'three' };

我正在尝试将object1.a设置为object2的键:
object2 = { key: 'something' };

我试图将密钥设置为:

[object1].a

object1.a

object1[a]

我记得我必须使用方括号表示法,但不知道如何实现?

我想这样做的原因是因为我将根据props更改object1的值,这样我就可以只有一个组件,根据接收到的prop更改键。


2
https://dev59.com/0W855IYBdhLWcg3wnFpO - Teemu
1
object1.a = object2 - Marc B
object1['a'] = ""; 你可以这样使用它 - Oshadha
谢谢您的评论。我也尝试了 object2 = { object1['a']: 'something' },但是它没有起作用... - cocacrave
@cocacrave:但我的意思是,之后如果有什么东西分配给object1.a,你并不希望object2发生任何变化,对吧? - T.J. Crowder
显示剩余4条评论
1个回答

12
如果object2已经存在,您只需使用方括号表示法:
object2[object1.a] = 'something';

现在,object2 有一个名为 one 的属性,其值为'something'

如果你正在创建 object2 ,在 ES5 中你必须先单独创建对象,然后再添加属性:

var object2 = {};
object2[object1.a] = 'something';
在ES2015(“ES6”)中,您可以在初始化程序中使用计算的属性名称(请注意[]):
// ES2015 only!
let object2 = {
    [object1.a]: 'something'
};

就像在使用括号表示法进行赋值时一样,您可以在初始化器中的这些方括号中拥有任何表达式。

请注意,这并不会创建对象之间的持续链接。它仅在处理初始化器时计算 object1.a 的值,并使用结果作为新对象上新属性的名称。


谢谢,这个可行 :) 我不知道你可以在括号符号内使用点符号。 - cocacrave
1
@cocacrave - 你可以在方括号内放置任何表达式,例如,这样说是完全合法的:object2[condition ? "test" : callFunc() + object1.a + "another string"] - nnnnnn
感谢 ES2015 的提示 :) - Vetterjack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接