Javascript 不可变地更新对象数组并管理长度重复
我正在尝试将搜索历史保存在我在reducer中制作的react/redux应用程序中(使用redux操作)。我想保存最新的十次搜索,并在开始时保留最新的搜索结果。我有一个对象数组,我想(不可变地)在数组的开头添加一个新对象,并将所有剩余的结果向下移动一个。我也不希望数组增长超过10个元素。我目前每次都只是用以下内容覆盖初始元素: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
[setWorkPermit]: (state, action) => ({
...state,
searchHistory: Object.assign([...state.searchHistory], { [0]: action.payload }),
}),
我希望在ES6中有一个干净的方法来做到这一点。有人要吗 我认为数组切片可以在这里实现这一点 只需构建一个新数组,其中包含索引为零的新对象,然后是前面0-9个索引的一部分,如下所示:
searchHistory: [action.payload, ...state.searchHistory.slice(0,9)],
希望这有帮助