如何实现以下没有嵌套 for循环:
invitations
是一个具有以下结构的数组:
邀请:
[{
"id": "TDK4QP788FOLMHQSZAFSYVVQ182RGM83",
"date_created": "2016-11-08T15:37:04.409Z",
"events": [{
"end_time": "21:00",
"start_time": "20:00"
}]
}, {
"id": "DEI4644LAR91SKGUKMR7RTWY3CMC7PCP",
"date_created": "2016-11-08T03:57:11.145Z",
"events": [{
"end_time": "23:45",
"start_time": "06:00"
}]
}]
事件:
[{
"end_time": "23:45",
"start_time": "06:00"
}, {
"end_time": "23:45",
"start_time": "06:00"
}, {
"end_time": "23:45",
"start_time": "06:00"
}, ]
我正在考虑遍历邀请数组,然后循环遍历每个事件项,然后将该项的开始和结束时间与事件数组中的每个项进行比较,同时循环遍历事件数组。
我想我可能会这样做。如果没有三个或更多嵌套循环,还有另一种方法吗?
提前致谢。
答案 0 :(得分:5)
使用映射很容易。请参阅lodash _.map
。
var results = _.map(invitations, 'events');
也可以在ES6中实现
var results = invitations.map(function(invitation) {
return invitation.events;
});
但是lodash的实施速度更快。
答案 1 :(得分:-1)
试试这个我希望它能运作:
在这里,我们必须迭代invitations
数组两次以获取events数组元素,并根据需要创建一个新数组。
工作演示:
var invitations = [{
"id": "TDK4QP788FOLMHQSZAFSYVVQ182RGM83",
"date_created": "2016-11-08T15:37:04.409Z",
"events": [{
"end_time": "21:00",
"start_time": "20:00"
}]
}, {
"id": "DEI4644LAR91SKGUKMR7RTWY3CMC7PCP",
"date_created": "2016-11-08T03:57:11.145Z",
"events": [{
"end_time": "23:45",
"start_time": "06:00"
}]
}];
var events = [];
for (var i in invitations) {
for (var j in invitations[i].events) {
events.push(invitations[i].events[j]);
}
}
document.getElementById("results").innerHTML = JSON.stringify(events);
#results {
font-weight : bold;
}
<div id="results"></div>