我想重构一段代码,以便每年显示/重新组合我的商品,而不必每年重复代码。截至目前,我已经尝试遍历了很多年,但似乎没有效果。
这是我当前在“视图”文件(ejs模板)中重复8年的这段代码:
<ul><h3>YEAR 2017:</h3>
<% items.forEach(function(el){ %>
<% if(el.date.substring(7, 11) == "2017"){ %>
<li><%= el.date %>:
<% if(el.url){ %>
<a href="<%= el.url %>" title="<%= el.title %>"><%= el.title %></a>,
<% }else{ %>
<%= el.title %>,
<% } %>
<% if(el.by){ %>
<%= el.type %>, <%= el.by %>
<% }else{ %>
<%= el.type %>
<% } %>
@ <%= el.location %></li>
<% } %>
<% }); %>
</ul>
答案 0 :(得分:2)
通过使用ejs模板和数组,似乎您已经在正确的轨道上。也许您应该重组传递项目的方式,以使它们位于像这样的对象数组中
items = [{“ year”:2016,“ items”:[item1,item2 ...]},{“ year”:2017,“ items”:[item1,item2 ..]},... ]
然后您可以通过这种方式遍历它们:
<% items.forEach(function(year){ %>
<ul><h3>YEAR <%= year.year %>:</h3>
<% year.items.forEach(function(el){ %>
...
<% } %>
<% } %>
答案 1 :(得分:0)
也许是这样,请转换为eje语法:
let arr = []
let arrEl = items.map(function(el, index){
return el.date.substring(7, 11);
})
arr.push(arrEl)
for (let i=0; i<arr.length; i++){
items.map(function(element, index){
if(el.date.substring(7, 11) == arr[i]){
//show your el
}
})
}