javascript 如何使用EJS模板语言打破循环?

xnifntxz  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(201)

我正在用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 %>
    <% } %>
<% } %>
k97glaaz

k97glaaz1#

这不是一个与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 -->
    <% } %>
<% } %>

相关问题