当从一个`for`循环内的while循环将值推入数组时,它会覆盖数组中的前一个元素

时间:2017-04-19 13:59:14

标签: javascript arrays date for-loop while-loop

  

当我从for循环中的while循环中将值推入数组时,它会覆盖数组中的前一个元素。

        var startDate = new Date(theoreticalData[0].UpdateDateMDY);
        var newDate = startDate;
        var daysDif = 0;
        var daysArray = [startDate];
        for ( var i= 1; i<theoreticalData.length; i++ ) {                
            var OldCycle = parseInt(theoreticalData[i].OldCycle);
            daysDif = theoreticalData[i].DaysDifference;
            while (daysDif > OldCycle ) {
                nextDate = this.sumDays(nextDate , OldCycle);
                daysArray.push(nextDate);
                daysDif = daysDif - OldCycle;
            } 
            nextDate = this.sumDays(nextDate , daysDif);
            daysArray.push(nextDate);
        }

1 个答案:

答案 0 :(得分:1)

  

当我在for循环中的while循环内推送值时,它会覆盖   数组中的前一个元素。

因为您每次都在更新同一个对象并将其推送到数组,

更改此行

nextDate = this.sumDays(nextDate , OldCycle);

nextDate = new Date(this.sumDays(nextDate , OldCycle).getTime());

每次都会创建一个新的日期对象。