gpt4 book ai didi

javascript - (rails) moment 对象显示为正在突变,但 .hours() 是正确的

转载 作者:行者123 更新时间:2023-12-03 02:22:52 25 4
gpt4 key购买 nike

我的初始化如下所示:

var date = moment(arrValue.start_date).add(5, 'hours');
var dummy = date.clone();
var date2 = dummy.add(arrValue.duration, 'hours');

我有一个如下所示的 for 循环:

for(var d = date.clone(); d.isBefore(date2); d.add(1, 'hours')) {
console.log(d);
console.log(d.hour());
unavailableDates.push(d);
}

在每次迭代中,d 的 console.log 具有相同的值

_d:2018 年 3 月 5 日星期一 16:00:00 GMT-0500(美国东部时间)

这个 ^ 是 console.log(date2) 将包含的值。它迭代正确的次数,并且 console.log(d.hour()) 显示正确的小时,​​但对象 d 本身由于某种原因不正确,因此当我将其推送到 unavailableDates 时,每个索引始终包含日期2。

最佳答案

这是因为您在每次迭代时都会变异并将相同的对象添加到数组中。这意味着在迭代结束时,数组中的每个对象都将是相同的对象,并进行最终的突变。为了避免这种情况,您可以在迭代中克隆对象,例如:

for(var d = date.clone(); d.isBefore(date2); d.add(1, 'hours')) {
console.log(d);
console.log(d.hour());
x = d.clone()
unavailableDates.push(x);
}

关于javascript - (rails) moment 对象显示为正在突变,但 .hours() 是正确的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49080755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com