我不想将重复数据添加到Redux存储数组中

js4nwp54  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(101)

我想将唯一数据添加到我的存储数组中,但在添加数据时似乎卡住了,重复数据被推入数组。我用的是打字机。
所以我的切片函数看起来像这样。

const initialState = {
  dropDownData:{
  programs: [],
  years: []
 }
}
const slice = createSlice({
  name:"filterSlice",
  initialState: initialState,
  reducers:{
     updateProgram:(state, action) => {
 state.dropDownData.programs = [...state.dropDownData.programs, action.payload];
   }
 }
});

我以这种方式调用这个reducer函数:dispatch(updateProgram(program))
所以我得到的程序是数组的形式。但我不需要程序数组中的重复数据。
如何更新我的reducer函数

tpgth1q7

tpgth1q71#

而不是这个:

state.dropDownData.programs = [...state.dropDownData.programs, action.payload];

使用此:

state.dropDownData.programs = [...(new Set([...state.dropDownData.programs, action.payload]))];

方法:

  • JavaScript Set允许只保留参数中的唯一元素。
  • 因此,当new Set使用现有两个数组中的元素创建时,Set将只保留唯一的元素。
  • 接下来,我们需要使用... spread-operator将Set转换回数组。
olmpazwi

olmpazwi2#

我试着这样做,并为我工作:

> addToMyList: (state, action: PayloadAction<Movie>) => {
>  if (!state.myList?.find((movie) => movie.id === action.payload.id)) {
>    state.myList = state.myList ? [action.payload, ...state.myList] : 
>     [action.payload];
>   }
> }

相关问题