从数组映射React JS中过滤多个项目[重复]

Posted

技术标签:

【中文标题】从数组映射React JS中过滤多个项目[重复]【英文标题】:filter multiple items out of array map React JS [duplicate] 【发布时间】:2021-09-15 17:12:24 【问题描述】:

我有一个从以下数组填充的表单中的选择类型:

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"],

如果这个日期在同一个时隙的数据库中是已知的,则必须过滤掉这个时隙。现在他在 1 天只取出 1 个值。

所以例如我有数组:

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

我想用这个函数过滤掉以下值:

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,
    );

但他只过滤 1 个这样的值:

所以我希望“17:00”和“17:30”都不再可见。如您所见,只有 17:00 不再可用。如果我有 1 个值,它会起作用。谁能告诉我我做错了什么?

【问题讨论】:

timeslots.filter(item =&gt; !timeslotsDisabled.includes(item)) 不用循环 【参考方案1】:

timeslots.filter(timeslot =&gt; !timeslotsDisabled.includes(timeslot));

【讨论】:

以上是关于从数组映射React JS中过滤多个项目[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从 jquery 对象映射中过滤唯一的数据属性值

Vue JS按多个数组对象项过滤

从两个数组中过滤重复项

React:使用多个复选框过滤数组列表

Javascript从多个数组中查找所有重复项

Angular2 从 JSON 数组中删除重复项