【发布时间】:2017-06-12 17:21:23
【问题描述】:
有了一个对象,我可以像这样克隆和添加:
let newObject = {
...obj,
[key]: {
...obj[key],
thing: true }
}
因此,这会将一些对象添加到数组中,然后更新一个对象的属性。 我知道要更新的项目索引,但不想覆盖现有属性。
现在我想对数组做同样的事情:
let newArray = [
...arr,
[key]: {
...arr[key],
thing: true }
]
这可能与上述相同。
但这不起作用。
{key}:thing 应该工作吗?我记得在某处读过这个,也许是它的 ES7?
我能做到:
let newArray = arr.map((item, key) => key === index ? { ...item, thing: true } : item);
但我希望语法更简洁。如果没有类似的语法,我会接受 no。
【问题讨论】:
-
不,除非你想在数组中追加/前置一个项目,否则使用
map。或者用两个切片展开数组。 -
你混淆了数组和对象。
-
[key]: thing不是数组元素。 -
我已经更新了示例以澄清
-
...is not an operator! 看起来您使用的是 experimental 扩展属性,而不是数组扩展。
标签: javascript ecmascript-next