【发布时间】:2019-09-20 03:45:00
【问题描述】:
当我使用.map 循环遍历数组myClasses 并且当数组中的status 等于“打开”或“进行中”时,我很难将数字加1。我的目标是拥有“开放”或“进行中”的课程总数
这是我目前正在做的事情
myClasses.map(a => (a.status === ('Open' || 'In Progress') ? 'Yes' : 'No'))
目前,当课程打开或进行中时,我只输出 yes 或 no,但我希望能够将 1 或 0 添加到数字变量。
这是 myClasses 数组包含的内容
0: {id: "0000AK", type: "Elective", status: "Open" }
1: {id: "597WUK", type: "Core", status: "Closed" }
2: {id: "082HCE", type: "Core", status: "In Progress"}
3: {id: "091HSN", type: "Elective", status: "Canceled" }
4: {id: "038GAQ", type: "Core", status: "Open" }
现在我的输出看起来像这样 Yes,No,Yes,No,Yes 而我希望输出是 3
有什么建议吗?
【问题讨论】:
-
('Open' || 'In Progress')将始终评估为"Open"因为它是一个真实值。你应该使用if(['Open', 'In Progress'].includes(a.status))。 -
您的条件
a.status === ('Open' || 'In Progress')是错误的。改写为(a.status === 'Open' || a.status === 'In Progress') -
如果你想得到一个单一的值,为什么你需要拿地图?
-
除了其他人建议的对比较的更改之外,您还应该在这里使用
filter()而不是map()。那么计数就是结果数组的长度。或者,您可以使用reduce()对计数器求和。
标签: javascript array.prototype.map