Javascript 如何在集合中按同一键分组
假设以下对象Javascript 如何在集合中按同一键分组,javascript,lodash,Javascript,Lodash,假设以下对象 让oldArr=[ {a:1}, {a:2}, {a:3}, {b:1}, {b:2}, {c:1} ] 期望结果 let newArr=[ [ {a:1}, {a:2}, {a:3}, ], [ {b:1}, {b:2}, ], [ {c:1} ], ] 我尝试使用lodash,我看到了分区函数,但它只将数组分成两组。groupBy通过键将其分组为对象。 有什么好办法吗?希望得到大家的帮助,谢谢 就像这样: 让oldArr=[ {a:1}, {a:2}, {a:3}, {b
让oldArr=[
{a:1},
{a:2},
{a:3},
{b:1},
{b:2},
{c:1}
]
期望结果
let newArr=[
[
{a:1},
{a:2},
{a:3},
],
[
{b:1},
{b:2},
],
[
{c:1}
],
]
我尝试使用lodash,我看到了分区函数,但它只将数组分成两组。groupBy通过键将其分组为对象。
有什么好办法吗?希望得到大家的帮助,谢谢 就像这样:
让oldArr=[
{a:1},
{a:2},
{a:3},
{b:1},
{b:2},
{c:1}
]
让对象={};
用于(旧货物的出租项目){
//拿到钥匙
设key=Object.key(项)[0];
//检查之前是否添加了此密钥
如果(!objects[key])objects[key]=[];
//推这个物体
对象[键]。推送(项);
}
设newArr=Object.values(objects);
log(newArr)
您可以使用
让oldArr=[
{a:1},
{a:2},
{a:3},
{b:1},
{b:2},
{c:1},
{a:4,c:2}
]
设newArr=
//删除由reduce创建的对象的关键帧
对象值(
//对于数组中的每个对象
旧阵列减少((acc,el)=>{
//对于对象中的每个关键帧
Object.keys(el).forEach(key=>{
//使用此键将对象添加到对象组
acc[键]=acc[键]| |[]
acc[键]。按下(el)
})
返回acc
}, {})
)
log(newArr)
您可以这样使用
让oldArr=[
{a:1},
{a:2},
{a:3},
{b:1},
{b:2},
{c:1}
];
设newArr={};
oldArr.forEach((i)=>{
设key=Object.key(i)[0];
newArr[key]=newArr[key]| |[];
newArr[key].push(i);
});
newArr=对象值(newArr);
控制台日志(newArr)代码>Object.values(u.groupBy(oldArr))
这是否回答了您的问题。groupBy(oldArr,ele=>{return Object.keys(ele)[0]})结果:{a:[{a:1},{a:2},{a:3}],b:[{b:1},{b:2}],c:[{c:1}]}下划线。谢谢大家,你们的答案并不能解决我的问题