如果[i]索引处的时间表的值等于[i +1]索引处的时间表的值,我尝试运行if循环以进行补全。但是时间表[i + 1]的值总是以未定义的形式返回
<% for(i=0; i < timesheets.length; i++){ %>
<td><%= timesheets[i][5] %></td>
<% if(timesheets[i][0] != timesheets[i + 1][0]){ %>
<% for(a=0; timesheets[a] == timesheets[i]; a++){ %>
<% timesheets.splice[a]; %>
<% } %>
<%}%><%}%>
错误日志:
TypeError: D:\reports\displayTimesheets.ejs:13
11| <% for(i=0; i < timesheets.length; i++){ %>
12| <td><%= timesheets[i][5] %></td>
>> 13| <% if(timesheets[i][0] != timesheets[i + 1][0]){ %>
14| <% for(a=0; timesheets[a] == timesheets[i]; a++){ %>
15| <% timesheets.splice[a]; %>
16| <% } %>
Cannot read property '0' of undefined
当错误到达数组的全长时,可能会在循环的最后一遍发生错误。那时没有i + 1,因为它是数组的结尾。
您将必须检查自己是否结束
尝试if(timesheets[i+1] && timesheets[i][0] !== timesheets[i+1][0])
这将尝试在访问空时间表上的属性之前检查对象是否存在。
希望这会有所帮助!