如何使用ES6过滤JSON数据

时间:2017-06-01 14:22:50

标签: javascript ecmascript-6

我是ES6的新手,所以不确定我是否以正确的方式解决这个问题。

我有一个帖子的JSON对象。

{
  "title": "title one",
  "category": ["dogs","cats","pets"]
},
{
  "title": "title two",
  "category": ["gold fish", "pets"]
}

我想从帖子中获取所有类别

["dogs","cats","gold fish", "pets"]

4 个答案:

答案 0 :(得分:3)

您可以减少所有类别的项目,并使用一组来表示唯一值。然后渲染一组数组。

使用的方法:

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()函数来投影您需要的内容,例如: