问题描述
我要遍历具有3个项目的对象,有时该对象的长度大于1。我只想拥有3个列,但是当对象多于1个时,它会增加列数。行跨度必须增加而不是cols。 我正在使用ejs模板。如何确保当数据长度大于1时。列数保持不变,并且每个项目数据都显示在一行中。
<% value.cartItems.map(item =>{ %>
<td><%= item.name %></td>
<td><%= item.count %></td>
<td><%= item.key %></td>
<% })%>
2个对象的购物车数据
[
{
count: 1,key: 'ID02',name: 'Tiny Ganesh',pic: 'http://res.cloudinary.com/antique/image/upload/v1596196504/cklhq28mzm5b61hrwcve.jpg',price: '2070'
},{
count: 1,key: 'ID03',name: 'Ganesh With Kalash',pic: 'http://res.cloudinary.com/antique/image/upload/v1596196650/tiwxkkug3hms2unacike.jpg',price: '3570'
}
]
表格代码
<table class="responsive-table highlight ">
<thead>
<tr>
<th>Date</th>
<th>Order Id</th>
<th>Address</th>
<th>Product</th>
<th>Product Count</th>
<th>Product Code</th>
</tr>
</thead>
<% data.map(i =>{%>
<% for (const [key,value] of Object.entries(i)) { %>
<tbody>
<tr>
<td><%= value.orderDate %></td>
<td><%= value.orderId %></td>
<td ><%= value.address %></td>
<% console.log(value.cartItems)%>
<% if(value.cartItems.length == 1){ %>
<% value.cartItems.map(item =>{ %>
<td><%= item.name %></td>
<td><%= item.count %></td>
<td><%= item.key %></td>
<% })%>
<% }%>
</tr>
</tbody>
<% } %>
<% })%>
</table>
解决方法
您需要确保始终有与标题相同数量的表单元格。因此,您需要添加一个else,然后可以删除冗余映射功能:
<table class="responsive-table highlight ">
<thead>
<tr>
<th>Date</th>
<th>Order Id</th>
<th>Address</th>
<th>Product</th>
<th>Product Count</th>
<th>Product Code</th>
</tr>
</thead>
<% data.map(i =>{%>
<tbody>
<% for (const [key,value] of Object.entries(i)) { %>
<tr>
<td><%= value.orderDate %></td>
<td><%= value.orderId %></td>
<td ><%= value.address %></td>
<% if(value.cartItems.length == 1){ %>
<td><%= value.cartItems[0].name %></td>
<td><%= value.cartItems[0].count %></td>
<td><%= value.cartItems[0].key %></td>
<% } else { %>
<td></td>
<td></td>
<td></td>
<% }%>
</tr>
<% } %>
</tbody>
<% })%>
</table>