从 VueJS 中的 v-for 中删除重复元素
Remove repeated elements from v-for in VueJS
我正在使用以下代码显示数组中的类别。该数组可能包含重复的类别。有什么办法只能 select VueJS 中的唯一元素?
<li v-for="product in products">
{{product.category}}
</li>
数组:
products: [
{ id: '1', title: 'Test 1', category: 'Test 3' },
{ id: '2', title: 'Test 2', category: 'Test 1' },
{ id: '3', title: 'Test 3', category: 'Test 2' },
{ id: '3', title: 'Test 4', category: 'Test 1' },
{ id: '5', title: 'Test 5', category: 'Test 3' }
]
您可以创建一个计算 属性: uniqProducts
,这将为您的 products
return 唯一数组,您需要进行以下更改:
HTML
<li v-for="product in uniqProducts">
{{product.category}}
</li>
在 vue 实例中你必须写一个 computed property which can use any technique (many listed here) 来获取 uniq 数组。
_
这里可以是lodash or underscore.
computed: {
uniqProducts () {
return _.uniqBy(this.products, 'property')
}
}
您可以使用所需的唯一值创建计算 属性。如果您在项目中包含 Lodash,请尝试 _.uniq
import uniq from 'lodash/uniq'
// ...snip
computed: {
productCategories () {
return uniq(this.products.map(({ category }) => category))
}
}
并在您的模板中
<li v-for="category in productCategories">
{{category}}
</li>
如果您不热衷于引入 Lodash(或其他实用程序库),也可以使用 Set
productCategories () {
return [...new Set(this.products.map(({ category }) => category))]
}
注意:我已经 converted the Set
to an array 因为 Vue.js 似乎无法迭代 Set
(或任何其他 Iterator
).
我正在使用以下代码显示数组中的类别。该数组可能包含重复的类别。有什么办法只能 select VueJS 中的唯一元素?
<li v-for="product in products">
{{product.category}}
</li>
数组:
products: [
{ id: '1', title: 'Test 1', category: 'Test 3' },
{ id: '2', title: 'Test 2', category: 'Test 1' },
{ id: '3', title: 'Test 3', category: 'Test 2' },
{ id: '3', title: 'Test 4', category: 'Test 1' },
{ id: '5', title: 'Test 5', category: 'Test 3' }
]
您可以创建一个计算 属性: uniqProducts
,这将为您的 products
return 唯一数组,您需要进行以下更改:
HTML
<li v-for="product in uniqProducts">
{{product.category}}
</li>
在 vue 实例中你必须写一个 computed property which can use any technique (many listed here) 来获取 uniq 数组。
_
这里可以是lodash or underscore.
computed: {
uniqProducts () {
return _.uniqBy(this.products, 'property')
}
}
您可以使用所需的唯一值创建计算 属性。如果您在项目中包含 Lodash,请尝试 _.uniq
import uniq from 'lodash/uniq'
// ...snip
computed: {
productCategories () {
return uniq(this.products.map(({ category }) => category))
}
}
并在您的模板中
<li v-for="category in productCategories">
{{category}}
</li>
如果您不热衷于引入 Lodash(或其他实用程序库),也可以使用 Set
productCategories () {
return [...new Set(this.products.map(({ category }) => category))]
}
注意:我已经 converted the Set
to an array 因为 Vue.js 似乎无法迭代 Set
(或任何其他 Iterator
).