Moment.js while 循环在 javascript、node.js 中

Pio*_*yla -1 javascript while-loop node.js momentjs

代码假设用给定开始日期和结束日期之间的日期填充数组。我正在使用 Node.js。

var startDate = moment(startDay);
var endDate = moment(endDay);
var datesBetween = [];

var startingMoment = startDate;


while(startingMoment <= endDate) {
    datesBetween.push(startingMoment);
    startingMoment.add(1, 'days');
}

console.log(datesBetween);
Run Code Online (Sandbox Code Playgroud)

cha*_*tfl 5

每次迭代都需要创建一个新对象,否则每次都会将相同的对象引用推送到数组中。他们都会以最后一个日期结束,因为它都是同一个对象

您可以使用moment.clone()每次克隆对象

var startDay = new Date(2018,1,1);
var endDay = new Date(2018,1,4);

var startDate = moment(startDay);
var endDate = moment(endDay);
var datesBetween = [];

var startingMoment = startDate;


while(startingMoment <= endDate) {
    datesBetween.push(startingMoment.clone());// clone to add new object
    startingMoment.add(1, 'days');
}

console.log(datesBetween);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.0/moment.min.js"></script>
Run Code Online (Sandbox Code Playgroud)