为什么没有将第一个日期添加到数组中

时间:2015-01-05 06:59:10

标签: javascript

为什么没有将第一个日期添加到此数组中?

function createArrayOfDates(start, end) {
    var dateArray = [];

    while(start < end) {
      dateArray.push(start);
      start = new Date(start.setDate( start.getDate() + 1 ));
    }

    return dateArray;
}

start = new Date(2015, 01, 01);
end = new Date(2015, 01, 05);
console.log(createArrayOfDates(start, end));

我期望的输出应包括第一个日期(2015/01/01),但数组从第二个开始。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

由于Date不是基本类型,因此它通过引用传递。这意味着在将其推入结果数组之前,您需要克隆 start的值:

dateArray.push(new Date(start));

否则,start变量和数组中新推送的元素仍将引用相同的值。

请参阅MDN

答案 1 :(得分:0)

试试这个..

<script>
function createArrayOfDates(start, end) {
    var dateArray = [];

    while(start < end) {
      dateArray.push(start);
      start = new Date(start);
    }

    return dateArray;
}
function getMyDateFormat(date) {
    var d = date ? new Date(date) : new Date;
    var dt = [d.getFullYear(), d.getMonth(), d.getDay()+1].join("/");
    return dt;
}
start = getMyDateFormat(new Date(2015, 01, 01));
end = getMyDateFormat(new Date(2015, 01, 05));

console.log(createArrayOfDates(start, end));

</script>

<强>结果:

["2015/1/1"]