javascript - 使用 Vue JS 显示分组的嵌套数组
问题描述
我正在尝试使用 Vue JS 对来自 ajax 调用的团队下的名称进行分组和显示列表。
这是原始对象:
0 { name: Bob Sinclair
teamname: Francs
email: bob.sinclair@test.com
job: Product Manager
type: Team Member
}
1 { name: Neil Jones
teamname: Dream Team
email: neil.jones@test.com
job: Developer
type: Team Member
}
2 { name: Jim Cairns
teamname: Dream Team
email: jim.cairns@test.com
job: Developer
type: Team Member
}
我使用以下函数按“团队名称”对数据进行了分组:
function groupBy(collection, property) {
var i = 0, val, index,
values = [], result = [];
for (; i < collection.length; i++) {
val = collection[i][property];
index = values.indexOf(val);
if (index > -1)
result[index].push(collection[i]);
else {
values.push(val);
result.push([collection[i]]);
}
}
return result;
}
这给了我控制台中的以下输出:
0 { 0 { name: Bob Sinclair
teamname: Francs
email: bob.sinclair@test.com
job: Product Manager
type: Team Member
}
1 { 0 { name: Neil Jones
teamname: Dream Team
email: neil.jones@test.com
job: Developer
type: Team Member
}
1 { name: Jim Cairns
teamname: Dream Team
email: jim.cairns@test.com
job: Developer
type: Team Member
}
我的问题是使用“v-for”来显示它。我希望能够为每个“团队名称”制作一张卡片,下面有一个“名称”列表。
提前致谢!
解决方案
假设您的分组数据称为团队:
那么你的模板代码应该是:
<div class="team" v-for="team in teams" :key="team[0].teamname">
<p> {{ team[0].teamname }} </p>
<div class="teammates" v-for="teammate in team" :key="teammate.name">
{{ teammate.name }}
// other infos for teammate
</div>
</div>
推荐阅读
- vtiger - 在 Vtiger 6.5 中升级 Apache、PHP 和 MySql 以迁移到 Vtiger 7
- video - 将同时变化的视频区域分离为单独的视频
- javascript - Vue - Vuex:从子组件调用操作时存储不更新
- angular - 我必须在 Ionic 4 中集成自定义错误处理
- python - 模仿Photoshop的图层蒙版
- python - 如何使用 python-opencv 调整图像的颜色?
- manim - 如何用箭头绘制数字轴
- javascript - 一旦用户从列表中选择一个选项而不单击提交按钮,如何在页面中显示文本框或选择/选项?
- python - jinja2中带有html标签的Django模板
- python - 尝试遍历多个数组并出现错误:ValueError:无法将大小为 2 的数组重新整形为形状 (44,1)