我有一个类似以下的对象,即将传递给ejs模板:
{
course1: { last4: '4242', name: 'Course 1', paid: true },
course2: { last4: '3155', name: 'Course 2', paid: true },
course3: { last4: '4242', name: 'Course 3', paid: true }
}
而且我正像这样通过它:
res.render("user", {
courses: myCourses,
});
我想在页面内渲染对象,我尝试过类似的事情:
<% if(courses){ %>
<%= courses %>
<% Object.entries(courses).forEach(course =>{ %>
<p>hello</p>
<%= course %>
<% }) %>
<% }else{ %>
<p>hello1</p>
<% }%>
所以在上一个示例中,您看到我只是得到对象键而不是值。我还如何呈现(或访问)值?谢谢
Object.entries
返回的数组的每个元素是一个[key, value]
数组。对于您现有的代码,course[0]
是当前键,course[1].last4
是当前对象的last4
字段,依此类推。
我会像您最初那样,至少在一个层次上对其进行破坏:
<% if (courses) { %>
<% for (const [key, course] of Object.entries(courses)) { %>
<%= key %>
<%= course.last4 %>
<%= course.name %>
<%= course.paid %>
<% } %>
<% } else { %>
<p>hello1</p>
<% } %>
将数据对象更改为此:
myCourse = [
{ last4: '4242', name: 'Course 1', paid: true },
{ last4: '3155', name: 'Course 2', paid: true },
{ last4: '4242', name: 'Course 3', paid: true }
]
然后您的代码将如下所示:
<% if(courses){ %>
<% courses.forEach(course =>{ %>
<%= JSON.stringify(course) %>
<!-- or -->
<%= course.name%> <%= course.last4 %> <%= course.paid %>
<br/>
<% }); %>
<% } %>