0

I have a select-type in a form that is filled from the following array:

constructor(props) {
        super(props);
        this.state = {
 timeslots:["17:00","17:15","17:30","17:45","18:00","18:15","18:30","18:45","19:00"],
}}

If this date is known in the database with the same time slot, it must filter out this time slot. Now he only takes 1 value out on 1 day.

So for example I have the array:

this.state.timeslotsDisabled: ["17:00","17:30"]

and there I want to filter out the following value with this function:

handleDayClick(day) {
    this.setState({
        timeslots: this.state.timeslotsReset
    })

    for(let i = 0; i< this.state.timeslotsDisabled.length; i++){

            if(new Date(this.state.timeslotsDisabled[i].date).getFullYear() == day.getFullYear() && new Date(this.state.timeslotsDisabled[i].date).getMonth() == day.getMonth() && new Date(this.state.timeslotsDisabled[i].date).getDate() == day.getDate()){
                console.log('same');
                console.log('GONE:'+ this.state.timeslotsDisabled[i].time)
                this.setState({
                    timeslots: this.state.timeslots.filter((item)=> item !== this.state.timeslotsDisabled[i].time),
                })
            }else{
                console.log('else');
            }

    }
    this.setState({
      selectedDay: day,
    });
}

But he only filter 1 value like this: enter image description here

So I would expect that both "17:00" and "17:30" would no longer be visible. And as you can see, only 17:00 is no longer available. If I have 1 value it works. Can someone tell me what I'm doing wrong?

Joppe Meijers
  • 301
  • 4
  • 24
  • 1
    `timeslots.filter(item => !timeslotsDisabled.includes(item))` No need to use the loop – adiga Jul 04 '21 at 17:47

1 Answers1

0

timeslots.filter(timeslot => !timeslotsDisabled.includes(timeslot));

zr0gravity7
  • 2,917
  • 1
  • 12
  • 33