首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript对象属性未定义,但该属性明显存在

Javascript对象属性未定义,但该属性明显存在
EN

Stack Overflow用户
提问于 2018-08-24 02:48:28
回答 2查看 71关注 0票数 1

我现在正面临着一个奇怪的情况,如果我在我的EJS模板中这样做:

<%= JSON.stringify(course.results[0]) %>

这会打印出以下内容:

{
  "user_id": "900",
  "trainingpath_id": "25",
  "sco_id": "1",
  "nb": "11",
  "date": "25/07/2018 14:14",
  "date_last_update": "21/08/2018 13:10",
  "lesson_status": "passed",
  "spent_time": "278",
  "score": "100",
  "progression": "100",
  "unique_sco_id": "427"
}

但如果我这样做:

<%= JSON.stringify(course.results[0].score) %>

我收到一个错误,告诉我it Cannot read property 'score' of undefined

有人经历过吗?

实际模板页面:

<div class="container">
    <div class="row heading-box">
        <div class="col">
            <h1><span id="introduction">Progress<br></span></h1>
        </div>
    </div>
    <div class="row text-box">
        <div class="col">
            <% if (Array.isArray(sessions)) { %>
                <% sessions.map(session=>{ %>
                    <div class="session-box">
                        <h4 class="session-title"><i class="fal fa-chevron-double-right title-indicator"></i> <%= session.name; %> </h4>
                        <% session.courses.map(course=>{%>
                            <div class="course-box">
                            <span class="fa-stack course-thumbnail-stack">
                                <i class="fas fa-circle course-thumbnail-circle ready fa-stack-2x"></i>
                                <i class="fal fa-play-circle course-thumbnail-action ready fa-stack-1x fa-inverse"></i>
                            </span>
                                <img src="<%= session.details[0].thumbnail_link.indexOf(lms_url) > -1 ? '' : `${lms_url}/` %><%= session.details[0].thumbnail_link %>" class="course-thumbnail">
                                <h4> <%= course.titre; %></h4>
                                <p>
                                    Duration : <%= (session.details[0].typical_learning_time_duration || 0) / 60 %> mins<br/>
                                    Score : <% if ('results' in course && Array.isArray(course.results)) { %><%= JSON.stringify(course.results[0], null, '\t') %><% } else { %><%= '0' %><% } %>%
                                </p>
                                <button type="button" class="btn btn-lg start-course" onclick="window.location='<%= course.lms_url %>>'">Start</button>
                                <div style="clear:both"></div>
                            </div>
                        <%});%>
                    </div>
                <% }) %>
        </div>
        <% } %>
    </div>
</div>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-24 03:24:20

正如注释中所讨论的,您的作用域没有任何问题,所以您可能有时会遇到数组course.results的问题,这意味着它可能没有元素。因此,为了避免这种情况,只需添加@Kosala Nuwan Perera建议的length检查

你也不需要stringify分数,因为它已经是一个字符串了。

尝试:

Score : <% if ('results' in course && Array.isArray(course.results) && course.results.length > 0) { %><%= course.results[0].score %><% } else { %><%= '0' %><% } %>
票数 2
EN

Stack Overflow用户

发布于 2018-08-24 04:01:07

你得到property 'score' of undefined的唯一原因是你的results[0]是未定义的。

我建议你这样做:

if(course && course.results && course.results.length) {
    course.results[0].score
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51992455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档