2016-09-14 49 views
0
let items = state.refundHistory.items.map((o, idx) => { 
    o.body.payment.loader = true; 
    return o; 
}); 

現在我想更新狀態中可用的項目,並希望返回修改後的數據狀態。我們如何更新javascript中特定對象的對象?

+0

中有什麼方法的問題,你有試過嗎? – Rajesh

+0

我有舊狀態的項目,並希望在項目加載器中添加一個鍵:true,那麼我的項目將被更新,我想返回狀態與具有加載器鍵的新項目。 – user6160824

+0

我的意思是,在您分享的代碼中,是否存在問題?你正在使用'.map',所以你正在返回新的列表。如果您想更新同一個對象,請嘗試'.forEach' – Rajesh

回答

0

你可以只重新分配

let items = state.refundHistory.items.map((o, idx) => { 
    o.body.payment.loader = true; 
    return o; 
}); 
state.refundHistory.items = items; 
return state; 

你也可以處理這種內嵌太

state.refundHistory.items = state.refundHistory.items.map((o, idx) => { 
    o.body.payment.loader = true; 
    return o; 
}); 

return state; 

但是您最好使用.forEach。這將節省不得不分配一個新的數組。

state.refundHistory.items.forEach(item => { 
    item.body.payment.loader = true; 
}); 
return state; 

一些庫,如終極版要求您創建一個全新的對象在這種情況下,運營商蔓延是非常方便的

let items = state.refundHistory.items.map((o, idx) => { 
    o.body.payment.loader = true; 
    return o; 
}); 

return { 
    refundHistory : { 
     items : items, 
     ...state.refundHistory 
    }, 
    ...state, 
} 
+0

'.forEach'有什麼問題? – Rajesh

+0

什麼都沒有。我總是使用'.forEach'。 – Stewart

+0

您已使用'.map',然後設置新值。這是'.forEach'理想的情況。' – Rajesh

相關問題