gpt4 book ai didi

javascript - 为什么我的数组中的所有日期元素都是相同的日期?

转载 作者:行者123 更新时间:2023-11-28 06:34:26 25 4
gpt4 key购买 nike

我在 Javascript 方面遇到了一个非常奇怪的问题。我试图循环遍历我的日期以进行一些检查并向我的数组添加值,但是当我返回数组时,它会显示我的所有集合以及最后一个值。下面是我的代码:

function myFunction() {
var todayDate = new Date();
var firstDay = new Date(todayDate.getFullYear(), todayDate.getMonth(), 1);
var lastDay = new Date(todayDate.getFullYear(), todayDate.getMonth() + 1, 0);
var testDates=[];

while (firstDay <= lastDay) {
var currentDate = firstDay;

testDates.push( firstDay);

firstDay.setDate(firstDay.getDate() + 1);
}

document.getElementById("demo").innerHTML = testDates;
}

这最终得到我所有日期的最后一个值:

Fri Jan 01 2016 00:00:00,Fri Jan 01 2016 00:00:00,Fri Jan 01 2016 00:00:00,Fri Jan 01 2016 00:00:00,Fri Jan 01 2016 00:00:00,Fri Jan 01 2016 00:00:00

为什么会发生这种情况?

最佳答案

您不是将日期添加到数组中,而是添加对日期的引用。然后,如果您更新 firstDay,则会更新数组中所有元素的日期。 (因为它们都指向同一日期)。尝试像这样克隆日期:

function myFunction() {
var todayDate = new Date();
var firstDay = new Date(todayDate.getFullYear(), todayDate.getMonth(), 1);
var lastDay = new Date(todayDate.getFullYear(), todayDate.getMonth() + 1, 0);
var testDates=[];

while (firstDay <= lastDay) {
var currentDate = firstDay;

testDates.push( new Date(firstDay.getTime()) );

firstDay.setDate(firstDay.getDate() + 1);
}

document.getElementById("demo").innerHTML = testDates;
}

关于javascript - 为什么我的数组中的所有日期元素都是相同的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34411372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com