Vue.js 仅显示具有唯一 属性 的对象
Vue.js only show objects with a unique property
我正在建立排行榜。我有一个领导者的集合。有来自同一个团队的多个条目。我只想显示每个团队的一个条目(最好是最近的)。我正在为数据库使用 Firestore。
我的 html 看起来像这样。 (为了简单起见,我缩短了代码)
<div v-for="tracker in trackers" :key="tracker.id">
<div>{{tracker.team.team_name}}</div>
</div>
如果我将此 {{ tracker }}
添加到 HTML 这就是一个跟踪器拆分出来的内容
{
"team": {
"bio": "<div><!--block-->This is Team One's Bio</div>",
"fullPath": "avatars/XXXXXX.jpg",
"team_id": "1",
"team_name": "Team One",
"url": "XXXXXXX",
"id": "XXXXXXX"
},
"tracker": {
"clue": "2",
"code": "23456",
"diff": 5269841,
"team": "1"
}
}
我有多个团队。我只想为每个 "team"
显示一个跟踪器,所以基本上按 "teams"
分组
非常感谢任何帮助
由于您标记了计算属性问题,所以您走在了正确的轨道上。只需创建一个计算的 属性,将跟踪器限制为唯一的团队。
computed: {
teams() {
return this.trackers.reduce((teams, tracker) => {
if (teams.find(team => team.team_id === tracker.team.team_id) === undefined) {
teams.push(tracker.team);
}
return teams;
}, []);
}
}
然后在您的模板中使用计算的 属性。
<div v-for="team in teams" :key="team.team_id">
<div>{{team.team_name}}</div>
</div>
如果您需要与团队关联的跟踪器信息,请改为为唯一跟踪器创建一个计算的 属性。
我正在建立排行榜。我有一个领导者的集合。有来自同一个团队的多个条目。我只想显示每个团队的一个条目(最好是最近的)。我正在为数据库使用 Firestore。
我的 html 看起来像这样。 (为了简单起见,我缩短了代码)
<div v-for="tracker in trackers" :key="tracker.id">
<div>{{tracker.team.team_name}}</div>
</div>
如果我将此 {{ tracker }}
添加到 HTML 这就是一个跟踪器拆分出来的内容
{
"team": {
"bio": "<div><!--block-->This is Team One's Bio</div>",
"fullPath": "avatars/XXXXXX.jpg",
"team_id": "1",
"team_name": "Team One",
"url": "XXXXXXX",
"id": "XXXXXXX"
},
"tracker": {
"clue": "2",
"code": "23456",
"diff": 5269841,
"team": "1"
}
}
我有多个团队。我只想为每个 "team"
显示一个跟踪器,所以基本上按 "teams"
非常感谢任何帮助
由于您标记了计算属性问题,所以您走在了正确的轨道上。只需创建一个计算的 属性,将跟踪器限制为唯一的团队。
computed: {
teams() {
return this.trackers.reduce((teams, tracker) => {
if (teams.find(team => team.team_id === tracker.team.team_id) === undefined) {
teams.push(tracker.team);
}
return teams;
}, []);
}
}
然后在您的模板中使用计算的 属性。
<div v-for="team in teams" :key="team.team_id">
<div>{{team.team_name}}</div>
</div>
如果您需要与团队关联的跟踪器信息,请改为为唯一跟踪器创建一个计算的 属性。