Skip to content

how to add and remove number without duplicate in the state object inside the array in Reactjs?

The below code which i’m using to add the data in the state the code is

 this.setState((state) => ({
      ...state,
      frequency: {
        ...state.frequency,
        days: [...state.frequency.days, parseInt(val)],
      },
    }));

my State is Given Below

this.state = {
      frequency: {
        days: [],
      },}

im adding numeric value from 1 to 30 but when i try to add same number it adds to the array i should not add it again please give me solution

Answer

before updating the state perform an evaluation like then assign the days

let tempDays = this.state.frequency.days.includes(parseInt(val)) ? [...this.state.frequency.days] : [...this.state.frequency.days, parseInt(val)]

 this.setState((state) => ({
      ...state,
      frequency: {
        ...state.frequency,
        days: tempDays ,
      },
    }));

for deletion

let tempDays = this.state.frequency.days.filter( day => day !== parseInt(val))

     this.setState((state) => ({
          ...state,
          frequency: {
            ...state.frequency,
            days: [...tempDays] ,
          },
        }));