从 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).