我正在使用sails.js开发一个简单的Web应用程序。
在我的前端代码中,我正在循环控制器发送的一组对象,我正在搜索特定的对象。一旦找到对象,我想打破循环。有没有一种干净的方法可以使用ejs模板语言?
我无法在EJS官方网站上找到任何相关信息,也无法在帆网站上找到任何相关信息。
我天真地试过这个:
<% objects.forEach(function(object) { %>
<% if(object.someId == someValue) {%>
<%= object.name %>
<% break %> <!-- This raise an illegal statement exception -->
<% } %>
<% } %>
以下代码按预期工作,但我正在寻找更清晰的解决方案
<% var found = false %>
<% objects.forEach(function(object) { %>
<% if(object.someId == someValue && !found) {%>
<%= object.name %>
<% found = true %>
<% } %>
<% } %>
答案 0 :(得分:4)
这不是与EJS相关的问题。
break
语句终止当前循环。虽然你不在循环中。你是回调函数,每个数组元素由forEach
方法调用一次。无法中断forEach(参见How to short circuit Array.forEach like calling break?)。但是,如果您需要它,可以使用for
循环来获得一个干净的解决方案:
<% for (var l = objects.length, i = 0; i < l; i++) { %>
<% object = objects[i]%>
<% if(object.someId == someValue) {%>
<%= object.name %>
<% break %> <!-- This will work as expected -->
<% } %>
<% } %>