当前位置: 首页 > 知识库问答 >
问题:

从数组映射中筛选多个项[duplicate]

万开畅
2023-03-14

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

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

如果此日期在具有相同时隙的数据库中已知,则必须过滤掉此时隙。现在他一天只取一个值。

例如,我有一个数组:

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

因此,我预计“17:00”和“17:30”将不再可见。如你所见,只有17:00不再可用。如果我有1个值,它就会工作。有人能告诉我我做错了什么吗?

共有1个答案

萧辰沛
2023-03-14

timeslots.filter时隙

 类似资料:
  • 问题内容: 我正在尝试使用数组映射进一步过滤对象,以准备将其发送到服务器进行保存。我可以过滤为1个键值,这很不错,但是我想更进一步,将其与布尔值内部进行比较。 所以,现在这就是我所拥有的- 这对于拉出id很有用,但是如果它们的选定值== false,我不想将它们压入这个新数组中,因此我将一个条件作为进一步过滤条件。这有点奏效,我得到了一个id数组,但是具有.selected == false的id

  • 如何过滤

  • 我有一张地图 我想从键列表中获取值,如拥有键列表,即键名称列表。 我知道一个方法 但是,我想将此列表本身传递到流API中,而不是循环,这将过滤匹配的值和返回列表。这是可能的! !提前致谢。

  • 问题 你想要根据布尔条件来筛选数组。 解决方案 使用 Array.filter (ECMAScript 5): array = [1..10] array.filter (x) -> x > 5 # => [6,7,8,9,10] 在 EC5 之前的实现中,可以通过添加一个筛选函数扩展 Array 的原型,该函数接受一个回调并对自身进行过滤,将回调函数返回 true 的元素收集起来。 # 扩展 A

  • 我有多个数组映射。 我想从多个地图中获取重复地图键的列表。 例如 除了遍历所有地图键,检查集合是否包含键,如果不将键添加到集合中,我想不出任何更干净的方法。有没有办法通过streams来实现这一点?