Javascript 不可变地更新对象数组并管理长度重复

Javascript 不可变地更新对象数组并管理长度重复,javascript,ecmascript-6,redux,immutability,redux-actions,Javascript,Ecmascript 6,Redux,Immutability,Redux Actions,我正在尝试将搜索历史保存在我在reducer中制作的react/redux应用程序中(使用redux操作)。我想保存最新的十次搜索,并在开始时保留最新的搜索结果。我有一个对象数组,我想(不可变地)在数组的开头添加一个新对象,并将所有剩余的结果向下移动一个。我也不希望数组增长超过10个元素。我目前每次都只是用以下内容覆盖初始元素: [setWorkPermit]: (state, action) => ({ ...state, searchHistory: Object.assign

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

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

我希望在ES6中有一个干净的方法来做到这一点。有人要吗

我认为数组切片可以在这里实现这一点

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

searchHistory: [action.payload, ...state.searchHistory.slice(0,9)],
希望这有帮助