Javascript 如何像这样对对象数组进行分组?并删除重复?
我正在编写一小段JS代码,其中包含一个数组:Javascript 如何像这样对对象数组进行分组?并删除重复?,javascript,arrays,grouping,lodash,Javascript,Arrays,Grouping,Lodash,我正在编写一小段JS代码,其中包含一个数组: [ { title: 'title1', id: 1 }, { title: 'title1', id: 2 }, { title: 'title2', id: 3}, { title: 'title2', id: 4} ] 然而,我需要这样的东西: "queried": { "title1": [1, 2], "title2": [3, 4], } 我正试图用Lodash和.groupBy(数组,“title”)来实现
[
{ title: 'title1', id: 1 },
{ title: 'title1', id: 2 },
{ title: 'title2', id: 3},
{ title: 'title2', id: 4}
]
然而,我需要这样的东西:
"queried": {
"title1": [1, 2],
"title2": [3, 4],
}
我正试图用Lodash和.groupBy(数组,“title”)
来实现这一点,但我得到了:
{
title1:[
{ title: 'title1', id: 1 },
{ title: 'title1', id: 2 }
],
title2:[
{ title: 'title2', id: 3 },
{ title: 'title2', id: 4 }
],
}
请如何修复它?用于迭代组,并提取ID的值:
const lol=[{“title”:“title1”,“id”:1},{“title”:“title1”,“id”:2},{“title”:“title2”,“id”:3},{“title”:“title2”,“id”:4}];
const result=\映射值(
_.groupBy(lol,“标题”),
v=>uu.map(v,'id')
);
控制台日志(结果)代码>
这也可以通过ES6在没有lodash的情况下完成,并且减少
如下:
var arr=[{title:'title1',id:1},{title:'title1',id:2},{title:'title2',id:3},{title:'title2',id:4}]
常量r=arr.reduce((r,{title,id})=>
(r[title]=[…r[title]| |[],id],r),{})
console.log(r)
什么是id1
<代码>id4
?在第一个和最后一个代码块中,这些变量是中间变量,它们看起来是字符串。@ CONXEP我编辑POST,它的整数。很好的答案和在框外的思考-它也不需要像Loasy+这样的第三方库。1.