Object.assign 更新对象中的数组元素

Object.assign to update the array element in an object

代码如下:

    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