Javascript 如何使用ES6过滤JSON数据

Javascript 如何使用ES6过滤JSON数据,javascript,ecmascript-6,Javascript,Ecmascript 6,我是ES6新手,因此不确定我是否以正确的方式进行此操作 我有一个posts的JSON对象 { "title": "title one", "category": ["dogs","cats","pets"] }, { "title": "title two", "category": ["gold fish", "pets"] } 我想得到所有类别的职位 ["dogs","cats","gold fish", "pets"] 用于映射每个帖子,并获取每个类别 let cate

我是ES6新手,因此不确定我是否以正确的方式进行此操作

我有一个posts的JSON对象

{
  "title": "title one",
  "category": ["dogs","cats","pets"]
},
{
  "title": "title two",
  "category": ["gold fish", "pets"]
}
我想得到所有类别的职位

["dogs","cats","gold fish", "pets"]
用于映射每个帖子,并获取每个类别

let categories = posts.map((p) => p.category)
这可能会导致重复的值,因为在这些对象的
类别
属性中都有
“pets”
。要筛选出重复的实例,请使用

用于映射每个帖子,并获取每个类别

let categories = posts.map((p) => p.category)
这可能会导致重复的值,因为在这些对象的
类别
属性中都有
“pets”
。要筛选出重复的实例,请使用


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

使用的方法:

  • 对于concat阵列
  • 要在一个数组中获取所有类别
  • 对于独特的价值
  • 用于获取新阵列
var数组=[{title:“title one”,类别:[“dogs”,“cat”,“pets”]},{title:“title two”,类别:[“gold fish”,“pets”]},
categories=[…新集合(array.reduce((r,a)=>r.concat(a.categories),[]);

控制台日志(类别)您可以减少类别的所有项目,并使用一组唯一值。然后渲染集合的数组

使用的方法:

  • 对于concat阵列
  • 要在一个数组中获取所有类别
  • 对于独特的价值
  • 用于获取新阵列
var数组=[{title:“title one”,类别:[“dogs”,“cat”,“pets”]},{title:“title two”,类别:[“gold fish”,“pets”]},
categories=[…新集合(array.reduce((r,a)=>r.concat(a.categories),[]);

控制台日志(类别)假设这是一个JSON对象数组:

var myArray=[{
“标题”:“标题一”,
“类别”:[“狗”、“猫”、“宠物”]
},
{
“标题”:“标题二”,
“类别”:[“金鱼”、“宠物”]
}
];
var newArray=myArray.map(函数(x){
返回x.category;
});

警报(新阵列)假设这是一个JSON对象数组:

var myArray=[{
“标题”:“标题一”,
“类别”:[“狗”、“猫”、“宠物”]
},
{
“标题”:“标题二”,
“类别”:[“金鱼”、“宠物”]
}
];
var newArray=myArray.map(函数(x){
返回x.category;
});

警报(新阵列)
您可以使用
map()
方法和
Set
和扩展语法

var data=[{“title”:“title one”,“category”:[“dogs”,“cat”,“pets”]},{“title”:“title two”,“category”:[“gold fish”,“pets”]}]
var result=[…新集合([].concat(…data.map(e=>e.category))]

console.log(result)
您可以使用
map()
方法和
Set
和扩展语法

var data=[{“title”:“title one”,“category”:[“dogs”,“cat”,“pets”]},{“title”:“title two”,“category”:[“gold fish”,“pets”]}]
var result=[…新集合([].concat(…data.map(e=>e.category))]


log(result)
“我有一个posts的JSON对象”-它不是JSON对象。这是无效的。使用javascript.map()函数“不确定我是否以正确的方式进行此操作”-您目前没有以任何方式进行此操作。请使用lodash方法。您需要(a)付出努力,(b)提出更具体的问题。你到底有什么可能?首先写JSON?将JSON转换成JavaScript?解析JSON?寻找阵列?获取所有数组值?消除重复?还有什么?“我有一个posts的JSON对象”-那不是JSON对象。这是无效的。使用javascript.map()函数“不确定我是否以正确的方式进行此操作”-您目前没有以任何方式进行此操作。请使用lodash方法。您需要(a)付出努力,(b)提出更具体的问题。你到底有什么可能?首先写JSON?将JSON转换成JavaScript?解析JSON?寻找阵列?获取所有数组值?消除重复?还有什么?我看到你喜欢
Set
在你的许多回答中,
Set
对于唯一的值来说非常方便。如果能看到每个步骤的输出就好了
Set
的问题是,你不能真正看到集合中的数据,只能看到数组中的渲染值。它没有原生的文字语法,比如数组或对象。我看到你喜欢
Set
在你的许多回答中,
Set
对于唯一的值来说非常方便。如果能看到每个步骤的输出就好了
Set
的问题是,你不能真正看到集合中的数据,仅在数组中呈现值。它没有本机文本语法,比如数组或对象。“假设它是JSON数组”-如果你要这样假设,为什么你的代码不以它开头?为什么不?请参阅
myArray
这是一个JavaScript数组,不是JSON数组。更新后的回答中仍然没有JSON。JavaScript对象不是JSON对象。“假设它是一个JSON数组”-如果你要这样假设,为什么你的代码不以它开头?为什么不?请参阅
myArray
这是一个JavaScript数组,不是JSON数组。更新后的回答中仍然没有JSON。JavaScript对象不是JSON对象,非常优雅solution@vsync谢谢。我甚至会说这相当于JS世界中的神圣诗歌:)非常优雅solution@vsync谢谢。我甚至会说这相当于JS世界中的神圣诗歌:)