我有以下对象:
'1': {
id: 1,
...
tags: ['cat I', 'cat II']
},
'2': {
id: 2,
tags: ['cat II', 'cat III']
}
要获取所有类别(但不能重复),请执行以下操作:
const cats = [];
this.courses.forEach(data => (data.tags) ? cats.push(data.tags) : '');
return [...new Set(cats.flat())];
它有效,但是我感觉这是“超越”的方法。它也运行两次,因为它在计算的属性中。
有没有一种更好的方法来区分和过滤类别。也许通过向商店查询?
答案 0 :(得分:3)
使用Array.flatMap()
获取标签数组。您可以使用解构和默认值来获取tags
属性,或者如果缺少则分配一个空数组。要获取唯一的标签,请从标签数组中创建一个Set,然后将Set散布回数组:
const data = [{"id":1,"tags":["cat I","cat II"]},{"id":2,"tags":["cat II","cat III"]},{"id":3}]
const result = [...new Set(data.flatMap(({ tags = [] }) => tags))]
console.log(result)
答案 1 :(得分:1)
您这样做:
bind