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

时间:2016-07-27 10:27:38

标签: javascript arrays assign

以下是代码:

    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无效。 它说" ["是一个意外的令牌。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

可以通过这种方式实现:

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