我在 redux reducer 中使用了这段代码:
case 'REMOVE_FL_EVENT' :
return{
...state,
events: Object.keys(state.events).map(group => {
return state.events[group].filter(item => item.id !== action.id)
})
}
这里发生的是 state.events 是一个对象,其中每个键都是它的事件组的名称,值是一个包含事件的数组。我想要做的是当我将对象转换为带有映射的数组时,如果过滤器发生转换回其原始状态,其中 state.events 不是数组,而是一个对象,具有键的原始名称。
最佳答案
不需要使用map
,你可以只使用reduce
,比如:
{
...state,
events: Object.keys(state.events).reduce(
(obj, event) => ({
...obj,
[group]: state.events[group].filter(item => item.id !== action.id)
}),
{}
)
};
更新
reduce
具有以下签名:
arr.reduce(回调[, initialValue])
所以在我们的脚本中,我们给一个空对象作为累加的初始值。
关于javascript - 映射对象,转换为数组,然后转换回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50970998/