比较不同的数组索引Javascript

问题描述 投票:0回答:1

如果[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
javascript ejs
1个回答
0
投票

当错误到达数组的全长时,可能会在循环的最后一遍发生错误。那时没有i + 1,因为它是数组的结尾。

您将必须检查自己是否结束

尝试if(timesheets[i+1] && timesheets[i][0] !== timesheets[i+1][0])

这将尝试在访问空时间表上的属性之前检查对象是否存在。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.