我是ES6的新手,所以不确定我是否以正确的方式解决这个问题。
我有一个帖子的JSON对象。
{
"title": "title one",
"category": ["dogs","cats","pets"]
},
{
"title": "title two",
"category": ["gold fish", "pets"]
}
我想从帖子中获取所有类别
["dogs","cats","gold fish", "pets"]
答案 0 :(得分:3)
您可以减少所有类别的项目,并使用一组来表示唯一值。然后渲染一组数组。
使用的方法:
Array#concat
用于concat数组,Array#reduce
用于获取一个数组中的所有类别,Set
表示唯一值,...
用于获取新阵列。
var array = [{ title: "title one", category: ["dogs", "cats", "pets"] }, { title: "title two", category: ["gold fish", "pets"] }],
categories = [...new Set(array.reduce((r, a) => r.concat(a.category), []))];
console.log(categories);
答案 1 :(得分:1)
使用Array.prototype.map
映射每个帖子,并获取每个类别。
let categories = posts.map((p) => p.category)
这可能会为您提供重复值,因为您在这些对象的两个"pets"
属性中都有category
。要过滤掉重复的实例,请使用Array.prototype.filter
。
let categories = posts.map((p) => p.category).filter((c, i, arr) => i == arr.indexOf(c));
答案 2 :(得分:1)
您可以使用1
方法和map()
并传播语法Set
...
答案 3 :(得分:0)
假设这是一个JSON对象数组:
?version=1
您可以使用map()函数来投影您需要的内容,例如: