我在用日期填充数组时遇到问题。
我正在尝试获取过去 12 个月 + 当前月份的数据,总共 13 个月,我想将其添加到选择列表中。
文档准备好后,我将用日期填充数组。
我尝试直接在 PopulateDates() 中填充日期数组,而不是在 fieldsArray 中,但在函数外部写入控制台时仍然产生相同的效果。
我在这里缺少什么?
$(document).ready(function() {
var dates = new Array();
dates = PopulateDates();
for (var i = 0; i < dates.length; i++) {
console.log("Date " + i + ": " + dates[i]);
// This returns April 01 2020 for each field
}
});
function PopulateDates() {
var datesArray = new Array();
var startDate = new Date();
startDate.setUTCFullYear(startDate.getUTCFullYear() - 1, startDate.getUTCMonth(), 1);
var dateIterator = startDate;
for (var i = 0; i < 13; i++) {
datesArray.push(dateIterator);
console.log("Added: " + dateIterator);
//This returns different dates correctly.
//Starting from March 2019 to March 2020
dateIterator.setMonth(dateIterator.getMonth() + 1);
}
return datesArray;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
最佳答案
发生这种情况是因为同一个对象被插入数组。克隆迭代器,然后将其插入数组。
let clone = new Date(dateIterator.getTime());
datesArray.push(clone);
关于javascript - 数组未正确填充日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60828309/