Javascript 如何用实际日期填充数组,用-1填充所有剩余日期

Javascript 如何用实际日期填充数组,用-1填充所有剩余日期,javascript,jquery,html,Javascript,Jquery,Html,我试图用[1和numberOfDaysInAMonth(29)之间的值填充从firstDay(6)到numberOfDaysInAMonth(29)的所有数组位置。并用-1 当前我的值从firstDay开始,从6开始,应该是从1到numberOfDaysInAMonth 我期望输出如下所示: [-1,-1,-1,-1,-1,-1,1....29,-1,-1,-1,-1,-1,-1,-1] // 6(-1) and at end 7(-1) 与之相反: [-1,-1,-1,-1,-1,-1,6.

我试图用[
1
numberOfDaysInAMonth(29)
之间的值填充从
firstDay(6)
numberOfDaysInAMonth(29)
的所有数组位置。并用
-1

当前我的值从
firstDay
开始,从6开始,应该是从
1
numberOfDaysInAMonth

我期望输出如下所示:

[-1,-1,-1,-1,-1,-1,1....29,-1,-1,-1,-1,-1,-1,-1] // 6(-1) and at end 7(-1)
与之相反:

[-1,-1,-1,-1,-1,-1,6....28,-1,-1,-1,-1,-1,-1,-1]
我这样做是为了为任何给定的月份和年份构建一个日历

我的期望:最佳且简单的方法或算法

问题:您可以看到日期从正确的位置开始
6
,值错误
6
(应该是
1
29

为了更好地查看,我创建了codepen:(您可以看到日期从正确的位置开始,但值错误
6
应该是
1
29

var-allDates=Array(42).fill(-1,0);
var firstDay=(新日期('2020',1)).getDay()//6,我们的实际日期将从哪里开始
var numberOfDaysInAMonth=32-新日期(2020,1,32).getDate()//二月
控制台日志(numberOfDaysInAMonth)//它应该填到下个月的第几天
对于(变量i=第一天;i对于(var i=1;i我更改了for循环条件,类似于

for (var i = firstDay, k=1; i < allDates.length, k <= numberOfDaysInAMonth; i++,k++) {
  allDates[i] = k;
}
试试这段代码

//从0开始的月份计数
var firstDay=新日期(2020,1,1).getDay(),
daysInMonth=新日期(2020,2,0).getDate();
//42如果一周从周一开始,则添加1以避免“未定义”
var allDates=数组(43)。填充(-1,0);
对于(变量i=0;i
span{
显示:内联块;
宽度:38px;
高度:29px;
背景:红色;
颜色:#fff;
保证金:1px;
文本对齐:居中;
线高:30px;
}
残疾人士{
背景:#ccc;
颜色:#000;
}

你的问题不清楚。目标是有意义的,但你没有描述问题。而且数组格式很奇怪。如果你有一个6x7的网格,为什么不使用多维数组呢?@RoryMcCrossan,请参阅我的编辑