javascript - 映射对象,转换为数组,然后转换回对象

标签 javascript redux

我在 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/

相关文章:

javascript - 自己的 reducer 中的空状态

javascript - 使用 Bootstrap Typeahead 的荧光笔替代方案

javascript - 不支持它的浏览器的@page size 的替代方案?

javascript - 如何在 Javascript 数组中查找单词?

reactjs - 与查询参数一起使用时,React-router 重定向到 404

javascript - 在 React/Redux 中测试连接的组件

javascript - AngularJS 模态与谷歌地图 API

javascript - 如何使 HtmlUnit 的 WebClient 加速执行由 window.setTimeout 触发的 javascript?

reactjs - Redux-persist迁移不迁移

javascript - React Redux 通过函数从子组件向父组件传递参数