Javascript 跳过if语句和循环中未定义的值
我试图循环浏览所有用户的评论,但使用if语句查找某个值。问题是我的应用程序中断了,因为一些用户还没有发表评论,所以我得到了一个未定义的'cannotread'属性'collected'。如何跳过if语句的未定义值?代码如下:Javascript 跳过if语句和循环中未定义的值,javascript,ejs,embedded-javascript,Javascript,Ejs,Embedded Javascript,我试图循环浏览所有用户的评论,但使用if语句查找某个值。问题是我的应用程序中断了,因为一些用户还没有发表评论,所以我得到了一个未定义的'cannotread'属性'collected'。如何跳过if语句的未定义值?代码如下: <% for(var i=0; i < users.length; i++) { %> <tr> <% if(users[i].comments.slice(-1)[0].collected !== 'At Recept
<% for(var i=0; i < users.length; i++) { %>
<tr>
<% if(users[i].comments.slice(-1)[0].collected !== 'At Reception') { %>
<td>Nothing in reception - well done!</td>
<% } else { %>
<td><%= users[i].studio %></td>
<td><%= users[i].name %></td>
<td><%= users[i].email %></td>
<td><%= users[i].username %></td>
<td><%= users[i].comments.slice(-1)[0].collected %></td>
<td><a class="btn btn-primary" href="/users/<%= users[i]._id %>">More Info</a></td>
<% } %>
接待处什么都没有-干得好!
您是否尝试继续代码>?我知道你可以把它放在某个街区的某个地方。如果它不符合您的条件标准,它将跳过并迭代到下一个注释/列表 只需添加一个检查,查看对象是否存在,以及注释长度是否大于0:
<% for(var i=0; i < users.length; i++) { %>
<tr>
<% if(!users[i].comments || users[i].comments.length == 0) {
continue;
} else if(users[i].comments && users[i].comments.length > 0 && users[i].comments.slice(-1)[0].collected !== 'At Reception') { %>
<td>Nothing in reception - well done!</td>
<% } else { %>
<% console.log('nothing in reception') %>
<td><%= users[i].studio %></td>
<td><%= users[i].name %></td>
<td><%= users[i].email %></td>
<td><%= users[i].username %></td>
<td><%= users[i].comments.slice(-1)[0].collected %></td>
<td><a class="btn btn-primary" href="/users/<%= users[i]._id %>">More Info</a></td>
<% } %>
0&&users[i]。注释.slice(-1)[0]。已收集!='在接待处,{%>
接待处什么都没有-干得好!
首先使用以下代码行检查该属性是否可用于该对象:
yourObject.hasOwnProperty('collected')//如果存在,则返回true;如果不存在,则返回false。
if(yourObject.hasOwnProperty('collected')) {
// code here...
} else {
// catch here...
}
试着阅读更多关于我所看到的这种语言是什么?@Derek朕會功夫 如果我没有弄错的话,它是.ejs
,html模板引擎,通常用于使用express、nodejs进行开发