javascript - 数组未正确填充日期

标签 javascript arrays date

我在用日期填充数组时遇到问题。

我正在尝试获取过去 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/

相关文章:

php - 如何将字符串拆分为单词对?

Java:将日期值保存到数据库时出错(Simpledateformat)

javascript - 如何在javascript中的点击位置显示工具提示(内容存储在数组中)?

JavaScript:从 onclick 函数内部返回所有者方法

javascript - 动态创建模板 - Meteor

javascript:如何隐藏代表过去日期的 DIV/UL?

python - 将序列日期列 (yyyy-mm-dd) 转换为英国日期格式(Pythonic 方式)

javascript - 任何用户都会在 iphone、android 等移动浏览器中禁用 JavaScript 吗?即使设备有能力?

php - 在 Codeigniter 中从多维数组检索数据

java - 查找二维数组的可能组合