javascript - js 数组推送结果仅返回迭代长度 [moment js & angular]
问题描述
我有一个函数可以在一个月内迭代几天。从那里我用 ngFor 在我的 html 中显示它们。我想将日期数字显示为文本,将日期名称(星期一、星期二、星期三等)显示为每天的课程。
monthDays = []; // global variable
getDaysInMonth(month, year) {
var date = new Date(year, month);
var days = []; // 1,2,3
var daysName = []; // mon, tue, wed
while (date.getMonth() === month) {
this.monthDays.push({
days: days.push(moment(date).format("D")),
daysName: daysName.push(moment(date).format("M"))
})
date.setDate(date.getDate() + 1);
}
console.log(this.monthDays);
}
因为我需要两个属性(days 和 daysName),所以我将它们推送到 monthDays 全局变量数组中,但结果只是月份的数字
Array(31) // I.e Jan getDaysInMonth(1,2019)
0: {days: 1, daysName: 1} // should be days: 1 , daysName: 'Tue'
1: {days: 2, daysName: 2} // should be days: 2 , daysName: 'Wed'
所以我可以在我的html中使用这样的对象
<p *ngFor="let x of monthDays" class="{{x.daysName}}" >{{ x.days }}</p>
任何帮助或推动正确的方向都会很棒。
解决方案
因为push
返回数组Array push的新长度,days
并且daysName
是数组的长度。我认为您想要获取具有 2 个属性的数组对象是 day 和 dayname。试试看:
monthDays = []; // global variable
getDaysInMonth(month, year) {
var date = new Date(year, month);
var days = []; // 1,2,3
var daysName = []; // mon, tue, wed
while (date.getMonth() === month) {
this.monthDays.push({
days: moment(date).format("D"),
daysName: moment(date).format("dddd")
})
date.setDate(date.getDate() + 1);
}
console.log(this.monthDays);
}
推荐阅读
- c# - Asp 单选按钮错误
- php - 如何在 MYSQL 选择中将所有 JSON 键设置为列名
- virtual-machine - 在主机和 Docker 容器之间建立通信
- asp.net - ASP.NET Core 2.1 API 缓存
- unix - 变量没有在从文件读取的文本中被替换 - Korn shell
- javascript - 以下函数的返回语句如何工作
- javascript - 如果页面上有 javascript 代码,PHP 图像创建不起作用
- mysql - 使用 direct_join 的 Mysql 查询导致成本更低但执行时间更长
- html - 浏览文件时打开具有自定义名称的特定类型的文件
- python - 打印命令中的 Python 错误。语法错误