获取分类字段的所有可能值的集合

时间:2017-09-12 06:37:01

标签: javascript ecmascript-6

来自以下对象

items = [{
    title = 'title 1',
    category = 'foo'
  },
  {
    title = 'title 5',
    category = 'bar'
  },
  {
    title = 'title n',
    category = 'bar'
  },
]

哪个

  • 我在运行时动态收到
  • 可以有任何长度
  • 其中每个类别字段可以包含最多items.length个值
  • 之一

我想获得字段category的所有不同值的集合。

在上面的例子中,

的结果
get_all_possible_categories(items)

将是

['foo','bar'].

如何实施

get_all_possible_categories(items) ?

2 个答案:

答案 0 :(得分:2)

您可以使用Set并映射所需属性的所有值。

最后取一个数组spread syntax ...来构建一个新数组。扩展sytax采用iterable的值并将它们作为参数插入。

var items = [{ title: 'title 1', category: 'foo' }, { title: 'title 5', category: 'bar' }, { title: 'title n', category: 'bar' }],
    values = [...new Set(items.map(o => o.category))];

console.log(values);

答案 1 :(得分:2)

只需将值映射回数组,使用Set获取唯一值

items = [{
    title : 'title 1',
    category : 'foo'
  },
  {
    title : 'title 5',
    category : 'bar'
  },
  {
    title : 'title n',
    category : 'bar'
  }
];

function get_all_possible_categories(arr) {
  return [...new Set(arr.map( x => x.category))];
}

var result = get_all_possible_categories(items);

console.log(result);