我有一个使用EJS模板的Express.js应用程序。我成功地使用传统的JS语法循环遍历了一个数组:
<% for (var i = 0; i < myArray.length; i++) {
this = myArray[i];
// display properties of this
} %>
但是我在想,有没有更简洁的方法来做到这一点呢?
具体来说,我能否使用Underscore或Lodash来用.each循环遍历?谢谢
我有一个使用EJS模板的Express.js应用程序。我成功地使用传统的JS语法循环遍历了一个数组:
<% for (var i = 0; i < myArray.length; i++) {
this = myArray[i];
// display properties of this
} %>
但是我在想,有没有更简洁的方法来做到这一点呢?
具体来说,我能否使用Underscore或Lodash来用.each循环遍历?谢谢
你可以使用 forEach
方法。
myArray.forEach(function(el, index) {
// el - current element, i - index
});
@wachme的回答是正确的,但为了保持原始问题,这里是使用Underscore的_.each
版本(并集成在模板语法中):
<% _.each(myArray, function(el, index) { %>
Value is <%= el %>, index is <%= index %>.
<% }) %>
< p > Array.prototype.forEach
的优点是您不需要在模板中依赖 Underscore。而 _.each
的优点是它有一些额外的技巧(例如,它也适用于对象),并且它可以在旧的 JS 环境中工作,无需任何 polyfills。
另外,Underscore 的 _.template
可以用来代替 EJS,虽然它的功能较少。此外,两个库之间的 <%=
和 <%−
的含义被交换了。当然,在 Underscore 模板中始终可以使用 _.each
。