Javascript 不可变地更新对象数组中属性的值

Javascript 不可变地更新对象数组中属性的值,javascript,ecmascript-6,Javascript,Ecmascript 6,我有这个对象数组 const d = [{ a_1: 1, b_2: 2 }] 如何在不创建临时变量的情况下将a_1值更新为2 const myKey = 'a_1' const myValue = 2 d.map(obj => ({...obj, obj[myKey]:myValue})) //why this won't work? 从obj[myKey]中删除obj,以便将[myKey]正确视为计算属性名 const transformedDs = d.map(obj =

我有这个对象数组

const d = [{
  a_1: 1,
  b_2: 2
}]
如何在不创建临时变量的情况下将
a_1
值更新为
2

const myKey = 'a_1'
const myValue = 2
d.map(obj => ({...obj, obj[myKey]:myValue})) //why this won't work?

obj[myKey]
中删除
obj
,以便将
[myKey]
正确视为计算属性名

const transformedDs = d.map(obj => ({...obj, [myKey]:myValue})) 

…并将
map
结果存储在某个地方。假设我只有很少的输入(html),并且我使用上面的代码,我的数组不是会有所有的[myKey]吗?@user3106579是的,因为键将始终存在于返回的对象中,它也将始终存在于结果数组中的每个项目中。如何更新此表单的值?没有
属性我认为
myKey
是动态的?当然,如果是这样的话,这是正确的,这一点已包含在对的回答中。如果它不是动态的,只需直接指定属性:
constresult=d.map(obj=>({…obj,a_1:2}))@T.J.Crowder a_1,将填充到其他对象,如何避免?恐怕我不知道你的意思…?@T.J.Crowder我无法使用逻辑更新表单的状态