我想用新值修改我现有的数组

I want to modify my existing array with new values

我每次都尝试用新值修改我的数组,但无法实现该功能。

所以推送数组元素的代码是这样给出的:

const updateYears =  (state, action) => {
      state.dropDownData.years = [...new Set([action.payload])];      
    }

而我的初始状态是这样的:

const initialState = {  
  dropDownData: {
    programs: [],
    years: [],
  }, 
};

上面的 reducer 函数正在将元素推送到“years”数组中。

locationSummaries.map((locationSummary)=>dispatch(updateYears(locationSummary.year)));

locationSummaries 是包含年份作为属性之一的对象数组。

所以当我的 year 数组包含值 [2017, 2018, 2019] 并且当我推送 [2018, 2019] 在里面,我在原来的 year 数组里面还有 [2017, 2018, 2019]。 相反,我想要的是将 year 数组修改为 [2018, 2019]。我相信它正在发生,因为相同的值被推入数组。

那么我应该如何修改我的reducer函数来实现这个修改。

如果 action.payload 是数组,如果您想完全修改数组,为什么不像这样分配新数组:

    const updateYears = (state, action) => {
        state.dropDownData.years = action.payload;
    }