首页 > 解决方案 > For循环TypeScript中的所有值都替换为最后一个值

问题描述

我在 javascript 中有一个 for 循环,它连接 calendarEvents 中的数据

drop(info) {
    var that = this;
    var startDate = info.date;
    var frequency = this.skippingNumber;

    for (var i = 0; i <= 3; i++) {
      (function (start) {
        that.calendarEvents = that.calendarEvents.concat({
          title: 'Dropped Event',
          start: start,
          allDay: info.allDay
        });
      })(startDate);
      startDate = this.addDays(startDate, frequency);
    }
  }

addDays(date: Date, days: number): Date {
    var passedDate = date;
    passedDate.setDate(passedDate.getDate() + days);
    return passedDate;
  }

如果我在循环中记录startDate,我会得到实际值,即Monday, Tuesday, Wednesday, Thursday。但是当我记录calendarEvents时,我得到的只是每个数据中的星期四。谁能帮我这个?提前致谢 !!

标签: javascripttypescript

解决方案


addDays()对receive 作为参数的所有调用,都修改并返回相同的对象 ( var startDate = info.date)。

重写addDays()方法以创建并返回一个新Date对象:

addDays(date: Date, days: number): Date {
    var passedDate = new Date(date.getTime());
    passedDate.setDate(passedDate.getDate() + days);
    return passedDate;
}

推荐阅读