首页 > 解决方案 > 我可以让一个属性在 vue v-for 中只出现一次吗

问题描述

我有很多人与相关团队。我想显示记录中的所有人,但我只想显示他们的团队名称一次。

意思是,如果 v-for 循环遇到这个特定的团队名称,它应该将它放在一个新的临时数组中以表示它应该是唯一的,然后当它再次遇到该团队名称时,通过该临时数组检查它并阻止它从再次显示。

示例 HTML 代码:

<div id="a-list">
     <div v-for="person in people">{{person.Name}}, {{person.Team}}</div>
</div>

示例 Vue 代码:

var crew = new Vue({
el: "#a-list",
data: {
people:
  [ { "Name": "Richard","Team":"DMS"}, { "Name": "Mark","Team":"VV"}, { "Name": "Steve","Team":"VV"}, {"Name":"Koji","Team":"MZ"}, {"Name":"Jamie","Team":"VV"} ]
  }
});

预期输出:

Richard, DMS
Mark, VV
Steve, 
Koji, MZ
Jaimie,

这可以直接从 v-for 循环而不是在 JS 文件中执行吗?

编辑以显示更多非连续数据

更新:正如法比奥所指出的,除非团队的顺序首先在输出中按顺序排列,否则上述场景没有多大意义。所以他的回答是正确的。

标签: javascriptarraysvue.js

解决方案


这可能是一个解决方案:

<div id="a-list">
    <div v-for="(person,index) in people"> {{person.Name}}, {{ ((index == 0) || person.Team != people[index-1].Team) ? person.Team : '' }}</div>
</div>

推荐阅读