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
有效,newState
的 txn
数组填充了两个元素。
第二个 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;
}
})
});
代码如下:
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
有效,newState
的 txn
数组填充了两个元素。
第二个 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;
}
})
});