在前端使用Nodejs和ejs我发送了一个数组,里面有数组。然而,当我循环并进入数组时,我输出的是每个数组中的第一项,而不是数组数组中的所有项。我的问题是如何显示所有这些帖子?控制台日志显示所有帖子只是一个如何提取它们的问题。
下面是我的虚拟数据阵列,下面是前端的示例,任何帮助都将不胜感激。
[
[
{
post_created_by: 'supervalue',
post_created_by_id: 54ecb20852ea734c0598c47b,
title: 'salmon',
desc: '3 for 2 fresh sea salmon',
_id: 5501b88c68e8b5842ece6eb0
},
{
post_created_by: 'supervalue',
post_created_by_id: 54ecb20852ea734c0598c47b,
title: 'Milkshake',
desc: 'Avonmore fresh strawberry milkshake 6 pack',
_id: 5501b8fd68e8b5842ece6eb1
}
],
[
{
post_created_by: 'maxol',
post_created_by_id: 54ecb2cd52ea734c0598c47e,
title: 'petrol',
_id: 5501bb9168e8b5842ece6eb6
},
{
post_created_by: 'maxol',
post_created_by_id: 54ecb2cd52ea734c0598c47e,
title: 'tayto',
desc: '20 packs for the price of 12',
_id: 5501bbb168e8b5842ece6eb7
}
],
[
{
post_created_by: 'Burkes Shoes',
post_created_by_id: 5502033d3d108e141dd01e8c,
title: 'boots',
desc: 'soccer boots size 5',
_id: 5502036a3d108e141dd01e8d
}
]
]
<% for (var i = 0; i < posts.length; i++) { %>
<div class="col-xs-8">
<a href="/busProfileFromUser?busId=<%= posts[i][0].post_created_by_id %>">
<h5><%= posts[i][0].post_created_by %></h5>
</a>
</div>
答案 0 :(得分:2)
您的代码遍历外部数组,但它只查看内部数组的第一个元素(索引0处的元素)。您需要依次遍历每个阵列;嵌套的for
循环是最简单的解决方案:
for (var i = 0; i < array.length; i++) {
for (var j = 0; j < array[i].length; j++) {
// do something with the element at array[i][j]
}
}
答案 1 :(得分:0)
您可以使用简单的递归展平函数将整个数组数组展平为单个数组,如下所示:
var flattenArray = function(arr) {
var i,
l = arr.length,
flatten = [],
element,
__push = [].push
;
for(i = 0 ; i < l ; i++) {
element = arr[i];
if(element.constructor === Array) {
__push.apply(flatten, flattenArray(element));
} else {
__push.call(flatten, element);
}
}
return flatten;
};
posts = flattenArray(posts);
然后,使用一个简单的for循环迭代该数组
<% for (var i = 0; i < posts.length; i++) { %>
<div class="col-xs-8">
<a href="/busProfileFromUser?busId=<%= posts[i].post_created_by_id %>">
<h5><%= posts[i].post_created_by %></h5>
</a>
</div>
<% } %>