gpt4 book ai didi

javascript - 当内循环完成工作后停止外循环运行

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:27 25 4
gpt4 key购买 nike

我想做的是当值匹配时向表单添加一个选中的复选框,否则添加一个标准的未选中的复选框。检查部分工作得很好,并且添加了选中的复选框,不幸的是,还添加了第二个未选中的复选框,导致重复条目。

我尝试在内部循环中将其设为 if else 语句,但这给出了奇怪的结果(对我来说)。所以我正在寻找一种方法来阻止外循环创建重复项。我正在使用 EJS 作为 Node.js。

<% for (var i = 0; i < sources.sources.length; i++) { %>
<% for (var j = 0 ; j < source.length ; j++) { %>
<% if (source[j] == sources.sources[i].id) { %>
<div class="checkbox-inline">
<label>
<input type="checkbox" name="source" value="<%=sources.sources[i].id%>" checked> <%=sources.sources[i].name%>
</label>
</div>
<% } %>
<% } %>
<div class="checkbox-inline">
<label>
<input type="checkbox" name="source" value="<%=sources.sources[i].id%>" > <%=sources.sources[i].name%>
</label>
</div>
<% } %>

最佳答案

在我看来,如果我正确理解你的代码,就不需要内部循环(不知道 ejs 是什么,但这对我来说看起来完全像一个 lodash 模板)。让您的模板看起来像这样不是更有意义吗:

<% for (var i = 0; i < sources.sources.length; i++) { %>
<div class="checkbox-inline">
<label>
<input
type="checkbox" name="source" value="<%=sources.sources[i].id%>"
<% if (source.indexOf(sources.sources[i].id) !== -1) { %> checked <% } %>
> <%=sources.sources[i].name%>
</label>
</div>
<% } %>

重复次数少得多,可读性更好,并且 indexOf 检查必须(可能)比 for 循环更快。

关于javascript - 当内循环完成工作后停止外循环运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47744507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com