Javascript 为什么不将第一个日期添加到数组中

Javascript 为什么不将第一个日期添加到数组中,javascript,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 Da

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

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));
函数createArrayOfDates(开始、结束){
var dateArray=[];
while(开始<结束){
dateArray.push(开始);
开始=新日期(start.setDate(start.getDate()+1));
}
返回日期数组;
}
开始=新日期(2015年1月1日);
结束=新日期(2015年1月5日);
log(createArrayOfDates(开始,结束));
我期望的输出应该包括第一个日期(2015/01/01),但数组从第二个日期开始


有什么想法吗?

因为
Date
不是原始类型,所以它是通过引用传递的。这意味着您需要克隆
start
的值,然后再将其推入结果数组:

dateArray.push(new Date(start));
否则,
start
变量和数组中新推送的元素仍将引用相同的值


请参见

,因为日期不是基元类型,所以它是通过引用传递的。这意味着您需要克隆
start
的值,然后再将其推入结果数组:

dateArray.push(new Date(start));
否则,
start
变量和数组中新推送的元素仍将引用相同的值


请参见试试这个..

<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>

试试这个..

<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>

顺便说一下:不要以零开始整数
01
是八进制,换句话说:
010==8
。另外,
Date
的month参数是0索引的。换句话说,
Date(2015,1,1)
是2月1日(也许你知道这一点,但你的问题暗示你期望的是1月)。顺便说一下:不要以零开始整数
01
是八进制,换句话说:
010==8
。另外,
Date
的month参数是0索引的。换句话说,
日期(2015年1月1日)
是2月1日(也许你知道这一点,但你的问题暗示你预期的是1月)。