簡體   English   中英

如何打破EJS模板語言的循環?

[英]How to break a loop with the EJS template language?

我正在使用sails.js開發一個簡單的Web應用程序。

在我的前端代碼中,我遍歷了由控制器發送的對象數組,並且正在搜索特定的對象。 一旦找到對象,我想打破循環。 是否有使用ejs模板語言的干凈方法?

我在EJS官方網站或Sails網站上找不到任何相關信息。

我天真地嘗試了到現在:

<% 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 %>
    <% } %>
<% } %>

這不是與EJS相關的問題。

break語句終止當前循環。 當您不在循環中時。 您在回調函數內部,每個數組元素均由forEach方法調用一次。 無法中斷forEach(請參閱如何像調用break那樣使Array.forEach短路? )。 但是,如果需要,可以使用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 -->
    <% } %>
<% } %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM