Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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/5/google-sheets/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 - Fatal编程技术网

Javascript如何在数组中对对象进行分组

Javascript如何在数组中对对象进行分组,javascript,Javascript,我希望这个数组按id值排序,所以我希望属于ID34的所有userHandle都在一个对象中,而不是分开 Array [ Object { "id": 34, "userHandle": "Aw8AUj1mPkON1Fd1s6LhkNETHfb2", }, Object { "id": 34, "userHan

我希望这个数组按id值排序,所以我希望属于ID34的所有userHandle都在一个对象中,而不是分开

Array [
      Object {
        "id": 34,
        "userHandle": "Aw8AUj1mPkON1Fd1s6LhkNETHfb2",
      },
      Object {
        "id": 34,
        "userHandle": "LrIwIx9I1xQBJ7aeCSrinpEaDP53",
      },
      Object {
        "id": 33,
        "userHandle": " PNfyQdC2cWaxtGiMZhLT9g1Lc9H2",
      },
    ]
像这样的

const arr=[
{
“id”:34,
“用户句柄”:“Aw8AUj1mPkON1Fd1s6LhkNETHfb2”,
},
{
“id”:34,
“用户句柄”:“LRIWIX9I1XQBJ7AECSRIPIADP53”,
},
{
“id”:33,
“用户句柄”:“PNfyQdC2cWaxtGiMZhLT9g1Lc9H2”,
},
];
const result=arr.reduce(
(分组,{id,…obj})=>{
let found=grouped[id];
如果(!找到){
发现=[];
分组[id]=已找到;
}
发现。推(obj);
分组返回;
},
{},
);

控制台日志(结果)类似但稍有不同的方法,但不使用
reduce

const arr=[
{
“id”:34,
“用户句柄”:“Aw8AUj1mPkON1Fd1s6LhkNETHfb2”,
},
{
“id”:34,
“用户句柄”:“LRIWIX9I1XQBJ7AECSRIPIADP53”,
},
{
“id”:33,
“用户句柄”:“PNfyQdC2cWaxtGiMZhLT9g1Lc9H2”,
},
];
const grouped={};
arr.forEach((obj)=>{
if(分组[obj.id]的类型=='undefined'){
分组的[obj.id]={id:obj.id,userHandle:[obj.userHandle]}
}
否则{
已分组[obj.id].userHandle.push(obj.userHandle);
}
});

控制台日志(分组)这不是排序而是分组。好的,如何分组输出是什么样子的?兄弟,这是我发布的输出,我只想更改输入的数组bro。。。最终结果应该是什么样的?为我工作谢谢你,这似乎是最好的答案。我有一个问题,我得到了这些结果,但有些地方我没有定义,有些地方我得到了这些结果(这是意料之中的,因为我没有把我的整个数组放在这里无论如何,我的整个数组都有一些没有属性id的对象,所以ofc在某个地方我得到了未定义,我如何删除那些未定义的结果?基本上如何从数组中删除它==未定义的任何地方,不管它的方法叫filterYeah,以太使用
filter()
以清理阵列,或在循环中有一个额外的
if
块,用于检查是否定义了
id
属性。