繁体   English   中英

在 object 中展平和区分多个 arrays

[英]Flatten and distinct multiple arrays in an object

我有以下 object:

'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())];

它有效,但我觉得这是“超越”的方式。 它也运行两次,因为它在计算属性中。

有没有更好的方法来区分和过滤类别。 也许通过向商店提出查询?

使用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)

你做:

 const courses = [{id: 1, tags: ['cat I', 'cat II ']}, {id: 2, tags: ['cat II', 'cat III']}, {id: 3}] const tags = courses.reduce((a, { tags = [] }) => [...a, ...tags], []).map(tag => tag.trim()) // <-- to remove extra spaces in "cat II " const result = [...new Set(tags)] console.log(result)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM