避免多个嵌套循环
Avoiding multiple nested loops
本文关键字:嵌套循环 更新时间:2023-09-26
如何实现下面的而不嵌套 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"
}, ]
我想循环遍历邀请数组,然后循环遍历每个事件项,然后将项目的开始和结束时间与事件数组中的每个项目进行比较,同时也循环遍历事件数组。
我想我可能做得太过分了。有没有另一种不需要三个或更多嵌套循环的方法?使用映射非常简单。参见lodash _.map
var results = _.map(invitations, 'events');
也可以在ES6中使用
实现 var results = invitations.map(function(invitation) {
return invitation.events;
});
但是lodash的实现更快。
试试这个,我希望它会工作:
在这里,我们必须迭代invitations
数组两次以获得事件数组元素,并根据要求创建一个新数组。
工作演示:
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>
相关文章:
- Knockout.js中带有if:子句的嵌套循环
- 有没有一种方法可以在所有嵌套循环之后放置一个标签,以便在一步中将它们全部打断
- JavaScript:在嵌套循环中为数组赋值
- Javascript嵌套循环匹配、组合、替换
- 在嵌套循环中处理 AJAX (Angularjs)
- knockout.js中的嵌套循环
- 在二维数组中搜索比嵌套循环更有效的方法
- 用于动态创建对象的嵌套循环
- 在javascript中嵌套循环
- JavaScript中的嵌入循环和嵌套循环之间有区别吗
- 嵌套循环中数组2d中的javascript变量丢失
- 嵌套循环javascript棋盘
- jQuery嵌套循环nextUntil选择器
- 如何使用嵌套循环使用 Javascript 打印到外部循环的输出中
- 如何在 Javascript 中创建一个模拟 100 行和 10 列网格的嵌套循环
- 如何避免嵌套循环
- 嵌套循环以添加数字
- 嵌套循环问题
- 嵌套循环中 Javascript 变量的作用域
- 从嵌套循环 Javascript 中的一个循环访问参数