Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在集合中按同一键分组_Javascript_Lodash - Fatal编程技术网

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}]}下划线。谢谢大家,你们的答案并不能解决我的问题