为什么没有将第一个日期添加到此数组中?
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),但数组从第二个开始。
有什么想法吗?
答案 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"]