在保留多个数据元素的同时从 VueJS 中的数组获取不同的值

Getting distinct values from an array in VueJS while keeping multiple data elements

我是 VueJS 的新手,在从数组中获取不同的值时遇到问题。我有一个包含多列的数据数组。我正在尝试获取不同的值以将它们用于复选框。我 运行 遇到的问题是,我似乎无法同时获得两列,同时仍保留不同的列。任何建议将不胜感激。

传入数据示例:

const array = [{
    'name': 'Alpha',
    'id': 1,
    'note': 'asdfasdf'
  },
  {
    'name': 'Beta',
    'id': 2,
    'note': 'asdfasdf'
  },
  {
    'name': 'Alpha',
    'id': 1,
    'note': 'asdfasdf'
  }
  ]

我希望函数的输出是什么:

const array = [{
    'name': 'Alpha',
    'id': 1
  },
  {
    'name': 'Beta',
    'id': 2
  }
  ]

我想如何使用新数组:

<v-checkbox
  v-for="(x,i) in array"
  :label="x.name"
  :value="x.id"
></v-checkbox>

我尝试了下面的代码,我确实得到了不同的值,但只有一列。

[...new Set(this.array.map((x) => x.id))]

当我尝试这个时,我得到了我想要的两列,但有重复。

[...new Set(this.array.map((x) => { return { name: x.name, id: x.id }}))]

如果这些记录根据 id 被认为是不同的,那么您就快完成了:只需将找到的唯一 ID 放入一个集合中,然后在原始数组中输入 find the first对于每个唯一 ID:

const array = [...]

const ids = [...new Set(array.map(x => x.id))]; // your code from above
// ids = [ 1, 2 ]

const distinct = ids.map(id => array.find(x => x.id === id));
// distinct =
// [
//   { name: 'Alpha', id: 1, note: 'asdfasdf' },
//   { name: 'Beta', id: 2, note: 'asdfasdf' }
// ]

您还可以 reduce the array into an object to eliminate duplicates based on id, and then take the values 该对象以获取相关条目:

const array = [...]
const distinct = Object.values(
    array.reduce((o, a) => { o[a.id] = a; return o}, {}));