var dd = new Date();
var nn = dd.getDay();
console.log(nn);
var dates = ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"];
var ordered = [];
for(var i = 0; i < dates.length; i++) {
console.log(nn+i)
ordered.push(dates[nn+i])
}
console.log(ordered);
嗨嗨,我遇到了这个问题。现在我可以得到当天,在阵列中搜索并从那天开始打印。但问题是前几天没有印刷。
上面的代码将打印一个包含7个元素的数组:
["Miércoles", "Jueves", "Viernes", "Sábado", undefined, undefined, undefined]
nn + 1执行从3到9的迭代,其中7,8和9为空白。如果你想知道为什么我把“Domingo”(星期日)作为数组的第一个元素是因为getDay()的工作原理。
如果不修改数组的长度,我如何添加其他未打印的日期?答案可能很明显,但我被卡住了......
提前致谢。
答案 0 :(得分:2)
您可以使用模运算符轻松解决此问题,以使索引环绕。因为您将当天添加到当前索引,所以您将超出数组的限制,并且未定义将添加到数组中。
var dd = new Date();
var nn = dd.getDay();
console.log(nn);
var dates = ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"];
var ordered = [];
for(var i = 0; i < dates.length; i++) {
console.log((nn+i) % dates.length)
ordered.push(dates[(nn+i) % dates.length])
}
console.log(ordered);
答案 1 :(得分:1)
上面的代码将打印一个包含7个元素的数组
这将取决于它是什么日子,因为你有:
var nn = dd.getDay();
然后在你的循环中:
ordered.push(dates[nn+i])
然后nn+
部分属于那里。
如果您的目标是在数组中的第一天nn
,然后按顺序执行其他操作,请使用remainder
运算符,以便将nn+i
的结果包裹起来到数组的开头:
ordered.push(dates[(nn+i) % dates.length])
首先,nn+i
在范围内,例如,如果nn
为3,则(3+0) % 7
为3 % 7
,即为i
,但后来为{{ 1}}增加,你到达nn+i
超出数组末尾的点; %
运算符为您包装它。例如,当您进入第五次循环迭代时,(3+4) % 7
为7 % 7
,0
。
直播示例:
var dd = new Date();
var nn = dd.getDay();
console.log(nn);
var dates = ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"];
var ordered = [];
for(var i = 0; i < dates.length; i++) {
console.log(nn+i);
ordered.push(dates[(nn+i) % dates.length]);
}
console.log(ordered);
.as-console-wrapper {
max-height: 100% !important;
}
答案 2 :(得分:1)
似乎这就是你想要做的事情
var dd = new Date();
var nn = dd.getDay();
console.log(nn);
var dates = [
'Domingo',
'Lunes',
'Martes',
'Miércoles',
'Jueves',
'Viernes',
'Sábado',
];
var ordered = [];
for (var i = 0; i < dates.length; i++) {
console.log((nn + i) % 7);
ordered.push(dates[(nn + i) % 7]);
}
console.log(ordered);
它使用modulo 7(每周7天),因此索引不会超过数组的长度。您可以在Remainder
您也可以使用% dates.length
答案 3 :(得分:0)
你已超出dates[]
的长度。当你到达&#34; Sabado&#34;时,在下一次迭代中,你必须开始指向dates[0]
。
答案 4 :(得分:0)
有一种简单的方法可以做到这一点: (查看https://jsfiddle.net/ujvwckcu/)
var dd = new Date();
var nn = dd.getDay();
var days = ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"];
// Array of all days from the current one till the end of the week
var ordered = days.slice(nn, 7);
// Array of all days before current one
var rest = days.slice(0, nn);
// Merge all days before to the days after array (will append at the end)
rest.forEach(function (value) {
ordered.push(value);
})
console.log('ordered', ordered);
答案 5 :(得分:-1)
或保持简单
File> Settings...> Appearance & Behavior> System Settings> HTTP Proxy