如何遍历对象数组并更改Redux中的属性?

时间:2019-04-18 15:01:04

标签: javascript arrays redux

我的状态为以下阵列:

state:{     
   items:[{id:0},{id:1},{id:2},{id:3}]
}

我能够做到这一点:  我可以删除其中一个对象,例如,第二个,数组将如下所示:

 items:[{id:0},{id:2},{id:3}]

我想做什么(需要帮助)

我想遍历数组并将id相等地设置为其在数组中的索引位置,以使其变为:

 items:[{id:0},{id:1},{id:2}]

因此,具有ID:2和Id:3的对象将根据其新的索引位置分别设置为Id:1和Id:2。

我该如何实现?

我在reducer中使用以下代码删除所需的对象:

if(action.type==='deleteItem'){
    return{
        ...state,
        items:[
            ...state.items.slice(0,action.index),
            ...state.items.slice(action.index+1),
        ]

    }
}

我如何实现它,以根据其新索引位置更改数组中每个对象的Id属性?

谢谢大家的关注!

1 个答案:

答案 0 :(得分:2)

您可以在删除一项后映射到结果数组,如下所示:

return {
    ...state,
    items: [
        ...state.items.slice(0,action.index),
        ...state.items.slice(action.index + 1),
    ].map((item, index) => ({ ...item, id: index }))
}