javascript - 按值而非引用将日期插入数组

标签 javascript arrays date pass-by-value

如何按值将日期存储到数组中?

我怀疑日期是通过引用存储到数组中的。我遇到的问题是数组最终包含多个相同日期的条目,即最后计算的工作日。

我正在创建一个函数,它将在数组中返回接下来的十个工作日。 “while”循环计算天数并将工作日存储到将返回的数组中。

        var thedays = getworkingdays();
        console.log(thedays);

        function getworkingdays(){
            var currentdate = new Date();
            i = 0;
            var workingdays = new Array();
            while (i < 10){
                //add a day
                currentdate.setDate(currentdate.getDate() + 1);
                i++;
                //if it's a workingday add it to the array
                if (!(currentdate.getUTCDay() == 0 || currentdate.getUTCDay() == 6 )){
                    workingdays.push(currentdate);
                }
            }
            return workingdays;
        }

最佳答案

你所在的地方:

workingdays.push([currentdate,datum,daysfromstart]);

您可能需要将 Date 对象的副本放入数组中,因此:

workingdays.push([new Date(+currentdate), datum, daysfromstart]);

会完成这项工作。

附注

为什么+当前日期?因为如果:

new Date(currentdate)
使用

时,currentdate 被转换为字符串(通过 Date.toString),然后解析回日期。实现的日期构造函数应该正确解析其 toString 方法的默认输出,他们会这样做,但如果您有一个像 45 年 6 月 23 日(即 45 年)这样的日期,它将是在大多数浏览器中解析为 1945 年 6 月 23 日。

边缘情况?也许吧,但为了 1 个字符,您可以放心,1 到 99 年的日期将被正确复制。 ;-)

关于javascript - 按值而非引用将日期插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27921459/

相关文章:

c - 在 C 中扩展动态数组并且没有任何返回

c# - String.Join 非字符串数组的最佳方法是什么?

php - 将天数添加到日期

javascript - 如何使图像在另一个图像之上拖动?

Javascript三元逻辑问题

javascript - Angular ngResource在向服务器进行http请求操作时如何传递变量来表达JS?

php - 如果字符串包含任何字符,则从数组中删除元素

python - 发生异常:AttributeError模块'calendar'没有属性'FIRDAY'

javascript - 与nodejs服务器端的时区偏移

javascript - 闪烁表行