javascript - forEach() 不能与我的 HTML 标签一起正常工作,在 JSON 上循环
问题描述
我有来自 API 的以下 json 响应,它保存到const users
:
[{
"id": 1,
"name": "Ani",
"workingHours": {
"days": {
"1": {
"day": "Monday",
"hours": [
{
"start": "09:00:00",
"end": "11:20:00"
},
{
"start": "14:00:00",
"end": "17:40:00"
}
]
},
"2"
"day": "Tuesday",
"hours": [
{
"start": "09:00:00",
"end": "12:30:00"
},
{
"start": "13:00:00",
"end": "19:30:00"
}
]
},
"3": {
"day": "Wednesday",
"hours": [
{
"start": "09:00:00",
"end": "12:30:00"
},
{
"start": "14:00:00",
"end": "18:30:00"
}
]
}
}
}
},
{
"id": 2,
"name": "Ben",
"workingHours": {
"days": {
"1": {
"day": "Monday",
"hours": [
{
"start": "09:00:00",
"end": "12:30:00"
},
{
"start": "14:00:00",
"end": "18:30:00"
}
]
},
"2": {
"day": "Tuesday",
"hours": [
{
"start": "09:00:00",
"end": "12:30:00"
},
{
"start": "15:00:00",
"end": "18:30:00"
}
]
},
}
}
}]
我想在我的应用程序中为员工显示以下文本:
Ani
Monday: 09:00 - 12:30 && 14:00 - 18:30
Tuesday: 09:00 - 12:30 && 15:00 - 18:30
Wednesday: 09:00 - 12:30 && 14:00 - 18:30
Ben
Monday: 09:00 - 12:30 && 14:00 - 18:30
Tuesday: 09:00 - 12:30 && 15:00 - 18:30
如何在 Javascript/Typescript 中实现这一点?
我告诉你我已经尝试过什么。
{users &&
users.map((user: any) => (
<p key={user.id}>{user.name}</p> //this is shown correctly
{user.workingHours.days.length != 0 &&
Object.values(
user.workingHours.days
).forEach((entry: any) => (
<>
<p>{entry.day}</p>
{entry.hours &&
entry.hours.map((hour: any) => (
<p>
{hour.start} - {hour.end} &&
</p>
))}
</>
))}
)}
我知道我在显示hour.start
and时执行错误hour.end
,但至少我认为我能够正确显示entry.day
。这不会发生,我也不知道为什么,即使我可以成功记录它:
{users &&
users.map((user: any) => (
console.log(user.name);
{user.workingHours.days.length != 0 &&
Object.values(
user.workingHours.days
).forEach((entry: any) => (
<>
console.log(entry.day)
))}
)}
日志:
Ani
Monday
Tuesday
Ben
Monday
Tuesday
Wednesday
似乎 forEach 根本不适用于 HTML 标签。
有人可以告诉我如何在我的页面中显示以下文本吗?
Ani
Monday: 09:00 - 12:30 && 14:00 - 18:30
Tuesday: 09:00 - 12:30 && 15:00 - 18:30
Wednesday: 09:00 - 12:30 | 14:00 - 18:30
Ben
Monday: 09:00 - 12:30 && 14:00 - 18:30
Tuesday: 09:00 - 12:30 && 15:00 - 18:30
解决方案
这是因为forEach
不返回任何内容,我认为您想map
用于迭代Object.values(user.workingHours.days)
.
推荐阅读
- c# - 立即更改代理 C#
- javascript - Vuejs如何使用props将数据从main.js传递到App.vue
- javascript - 对多个元素运行相同的函数
- ruby-on-rails - 如何在 Rails 上正确使用带有 ruby 的 bootstrap datepicker
- css - 使用 VML 时,按钮文本在 Outlook 中向左移动
- kubernetes - Kubernetes 用户令牌是如何授权的?
- toggle - 当客户端要求切换值时,LaunchDarkly 的 SDK 是否依赖本地功能存储或流 API?
- angularjs - 太多可观察的 $scope 变量和函数导致 RangeError
- vba - 添加自定义宏加载项后,如何将其自动添加到工具栏/功能区?
- java - 初始化数组列表的时间复杂度