首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何去掉javascript中的重复项?

问如何去掉javascript中的重复项?
EN

Stack Overflow用户
提问于 2021-04-05 15:26:31
回答 1查看 49关注 0票数 0

注意:我知道我们使用Set来去掉数组中的重复项。

我有一个date dropdown.When我选择一个日期,它会在列表中正确地显示日期。

但问题是,如果我选择了一个已经选择的日期,它也会显示在列表中。我希望如果用户选择了一个已经选择的日期,它不应该添加到列表中,而是显示错误“你不能选择相同的日期”。

以下是代码-->

代码语言:javascript
复制
                 <Col md={12}>
                     <Datetime
                        timeFormat={false}
                        dateFormat={dateFormate}
                        // onChange={this.handleStartDate}
                        onBlur={this.handleStartDate}
                        onFocus={this.onFocus}
                      />
                   </Col>
                        {dateDay.map((dateday, dateDayindex) => (
                          <Col md={1} className="p-t-6">
                           {dateday.date}
                          </Col>
)}

//handleStartDate

代码语言:javascript
复制
handleStartDate = (date) => {
    const { dateDay } = this.state;
    const selectedDate = moment(date).format('DD/MM/YYYY');
    this.setState(
      {
        isSelectedDate: true,
      },
      () => {
        this.addDate(selectedDate);
      },
    );
  };
addDate = (selectedDate) => {
    const { dateDay } = this.state;
    const obj = { wday: '', interval: [], date: selectedDate, type: 'date' };

    const newInterval = { from: '9:00am', to: '10:00am', error: null };
    obj.interval.push(newInterval);
    arr.push(obj);
    if (arr.length > 1) {
      const isOverlaped = this.checkTimeOverlap(arr, arr.length - 1);
      if (isOverlaped) {
        newInterval.error = 'Time overlap with another set of times';
      }
      if (selectedDate === 'Invalid date') {
        newInterval.error = 'Please select a valid date';
      }
    }
    this.setState({ dateDay: arr });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-05 15:35:41

在handleStartDate中进行验证,以检查所选日期是否已处于dateDay状态:

代码语言:javascript
复制
handleStartDate = (date) => {
    const { dateDay } = this.state;
    const selectedDate = moment(date).format('DD/MM/YYYY');

    // If selectedDate doesn't exist on the dateDay state, add it. Otherwise, show alert message
    if (!dateDay.find(obj => obj.date === selectedDate)) {
        this.setState(
            {
                isSelectedDate: true,
            },
            () => {
                this.addDate(selectedDate);
            },
        );
    } else {
        alert('You cannot choose the same date')
    }
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66949580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档