百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> JS多层for循环break或continue到具体层
分享文章到:

JS多层for循环break或continue到具体层

发布时间:05/17 来源:未知 浏览: 关键词:

loop

场景

多层嵌套循环时候,需要控制指定层。

这个内容很早以前就入笔记了,但是一直很少用到,今天刚好碰到一个很复杂的数据结构,就把源码拿出来大家看一下,方便学习。


关键源码

areas.forEach(area => { let topRow = area.topRow let seatRows = area.seatRows seatRows.forEach(seatRow => { out: for(let i = seatRow.start; i <=>

 

if(seatRow.emptys) { let emptys = seatRow.emptys for(let j = 0; j <>

 

let empty = emptys[j] if(empty === i) continue out } } seats.push({ top: topRow, left: i, name: '', status: '', seat_type: '', }) } topRow++ })})

这里实现的是座位排布的核心逻辑层,当然可能还没优化好,主要说下主题嘛~

具体各个层级的代码部分截图如下:

生成器

生成器

各区域座位表

座位表

emptys 就是无座位的地方。

因为要做好自动渲染,所以里面穿插了许多辅助字段,让手工代码尽可能的小一点。

效果如下(目前):

手机端效果

具体业务逻辑不做梳理,讲一下主题问题:

一、渲染每行是从左往右按照区域字段start与end来循环。

二、每行都有可能有一些空的座位,那么具体空的放到了一个数组emptys里面。

三、所以需要在循环里面在循环看一下是否是空的位置,如果是则进行后续操作,不把当前位置放进去。

out:for(let i = seatRow.start; i <=>

 

if(seatRow.emptys) { let emptys = seatRow.emptys for(let j = 0; j <>

 

let empty = emptys[j] if(empty === i) continue out } } seats.push({ top: topRow, left: i, name: '', status: '', seat_type: '', })}

就是上面这个代码了。

标记就是第一行的那个out,注意带个冒号':',然后到符合条件的地方使用continue out即可。

如果是break,那么就是break out,即跳出结束外层循环,不带就是结束当前层循环。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有116人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板