使用数组键/值对将JavaScript附加到对象

5

我有一个动态构建的对象,例如:

obj = {};
obj.prop1 = 'something';
obj.prop2 = 'something';
obj.prop3 = 'something';

现在我需要从一个数组中取出一个项目,并用它来定义“propX”的相应值。

我认为,如果我做了像下面这样的事情

obj.[arr[0]] = some_value;

那样对我有用。但我想这不是我得到的错误,我得到的是语法错误。“缺少 . 操作符后的名称”。我理解了,但我不确定如何解决它。最终目标是使用数组项的值作为对象的属性名称,然后使用另一个变量定义该属性,该变量也被传递。我的问题是,如何实现附加到对象上的内容将被视为

obj.array_value = some_variable;

可能是动态对象属性名称的重复问题。 - Felix Kling
Felix,好发现。我认为这确实使我的帖子成为了重复内容。只是因为我没有想到更好的搜索短语所以没有找到它。谢谢。 - chris
没问题。实际上这是一个非常普遍的问题。您可能会发现我的问答在这里也很有用:https://dev59.com/X2ct5IYBdhLWcg3wpfFc。 - Felix Kling
3个回答

8

这会将一个数组添加到对象中还是保持其为对象? - chris
@chris:它将在对象中添加some_value,而属性名称将是arr[0]的值。也许你认为括号表示法与数组有关,但实际上不是这样。它只是访问属性的另一种方式。 - Felix Kling
我应该在示例中提供它。但是有一个硬编码数组,它作为索引起作用,我们可以随着时间的推移添加到其中,因此,未来要搜索与数组提供的内容相关的所有引用,我们可以在数组级别上更改它,而不是整个代码库。 - chris
@dystroy 谢谢你提供的额外参考资料,我想我会去阅读一下。 - chris

3

你的理解基本正确,但是你需要在代码中删除这一行的点号:

obj.[arr[0]] = some_value;

应该改为:

obj[arr[0]] = some_value;


3
@Amareswar:但那样做是错误的。它会尝试设置存储在obj.arr中的数组的第一个元素。 - Felix Kling

3
您可以尝试:

obj[arr[0]] = some_value;

即去掉小数点 :)

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