这是代码:

    var state = {
    txn:[],
    do:false
}

var newState = Object.assign ({}, state,
    {
        txn: state.txn.slice(0,0).concat([{txnId:3, b:5}, {txnId:5, b:6}])
    },
    {
        do: !state.do
    }
);

var newState2 = Object.assign ({}, newState,
{
    txn[0].txnId: 9
});

第一个 Object.assign 有效,newStatetxn 数组填充了两个元素。

第二个 Object.assign 不起作用。
它说“[”是一个意外的标记。

有什么建议么?

最佳答案

可以通过以下方式实现:

var newState2 = Object.assign ({}, newState,
{
    txn: newState.txn.map((item, index) => {
      if (index === 0)  {
        return { txnId: item.txnId, b: 9 };
      }
      else {
        return item;
      }
    })
});

http://codepen.io/anon/pen/yJEoJd?editors=1111

关于javascript - Object.assign 更新对象中的数组元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38610376/

10-12 00:05
查看更多