不变地更新对象数组并管理长度减少

时间:2018-06-25 21:23:22

标签: javascript ecmascript-6 redux immutability redux-actions

我正在尝试将搜索历史保存在我在reducer中制作的react / redux应用程序中(使用redux-actions)。我要保存最近的十个搜索,并在开始时具有最新的搜索。我有一个对象数组,我想(不可变地)在数组的开头添加一个新对象,并将所有剩余结果向下移动一个。我也不希望数组增长到大于10个元素。我目前每次都使用以下方法覆盖初始元素:

[setWorkPermit]: (state, action) => ({
  ...state,
  searchHistory: Object.assign([...state.searchHistory], { [0]: action.payload }),
}),

我希望在ES6中有一种干净的方法可以做到这一点。有没有人?

1 个答案:

答案 0 :(得分:5)

我认为数组切片可以解决问题!

只需构建一个新数组,其中包含索引为零的新对象,然后是前面的0-9索引的切片,如下所示:

searchHistory: [action.payload, ...state.searchHistory.slice(0,9)],

希望这会有所帮助!