Javascript 将嵌套数组中的对象分组

Javascript 将嵌套数组中的对象分组,javascript,arrays,object,reduce,Javascript,Arrays,Object,Reduce,我在另一个数组中有两个数组。在这些数组中有一些对象,我想按对象键对它们进行分组 父数组包含n个数组 就像我说的,在这些数组中还有一个填充了对象的数组 数组1 阵列2 我想按它们的键对这些数组进行分组。结果应该是这样的: 0: 309: [TaskType,TaskType] 310: [TaskType,TaskType] 311: [TaskType,TaskType] 312: [TaskType,TaskType] 313: [TaskType,TaskType] 314: [TaskTy

我在另一个数组中有两个数组。在这些数组中有一些对象,我想按对象键对它们进行分组

父数组包含n个数组

就像我说的,在这些数组中还有一个填充了对象的数组

数组1

阵列2

我想按它们的键对这些数组进行分组。结果应该是这样的:

0:
309: [TaskType,TaskType]
310: [TaskType,TaskType]
311: [TaskType,TaskType]
312: [TaskType,TaskType]
313: [TaskType,TaskType]
314: [TaskType,TaskType]
485: [TaskType,TaskType]

如何做到这一点?

一种方法是首先将数组合并在一起,然后按每个键值设置键:

var parentArray=[
[{
关键字:313,
值:“R/I”,
IsDisabled:是的,
持续时间:1
},
{
关键字:312,
值:“MEL”,
IsDisabled:是的,
持续时间:2
},
{
关键字:311,
值:“SGH”,
IsDisabled:错误,
持续时间:9
},
{
关键字:309,
值:“LOC”,
IsDisabled:是的,
持续时间:4
},
{
钥匙:485,
值:“TT”,
IsDisabled:是的,
持续时间:5
},
{
关键字:310,
值:“FOT”,
IsDisabled:是的,
持续时间:6
},
{
关键字:314,
值:“TS”,
IsDisabled:是的,
持续时间:7
}
],
[{
关键字:313,
值:“R/I”,
IsDisabled:是的,
持续时间:1
},
{
关键字:312,
值:“MEL”,
IsDisabled:是的,
持续时间:2
},
{
关键字:311,
值:“SGH”,
IsDisabled:是的,
持续时间:3
},
{
关键字:309,
值:“LOC”,
IsDisabled:错误,
持续时间:6
},
{
钥匙:485,
值:“TT”,
IsDisabled:是的,
持续时间:5
},
{
关键字:310,
值:“FOT”,
IsDisabled:是的,
持续时间:6
},
{
关键字:314,
值:“TS”,
IsDisabled:是的,
持续时间:7
}
]
];
var allTasks=[].concat.apply([],parentArray);
var={};
for(var i=0,len=allTasks.length;i控制台日志(分组)一种方法是首先将数组合并在一起,然后按每个键值设置键:

var parentArray=[
[{
关键字:313,
值:“R/I”,
IsDisabled:是的,
持续时间:1
},
{
关键字:312,
值:“MEL”,
IsDisabled:是的,
持续时间:2
},
{
关键字:311,
值:“SGH”,
IsDisabled:错误,
持续时间:9
},
{
关键字:309,
值:“LOC”,
IsDisabled:是的,
持续时间:4
},
{
钥匙:485,
值:“TT”,
IsDisabled:是的,
持续时间:5
},
{
关键字:310,
值:“FOT”,
IsDisabled:是的,
持续时间:6
},
{
关键字:314,
值:“TS”,
IsDisabled:是的,
持续时间:7
}
],
[{
关键字:313,
值:“R/I”,
IsDisabled:是的,
持续时间:1
},
{
关键字:312,
值:“MEL”,
IsDisabled:是的,
持续时间:2
},
{
关键字:311,
值:“SGH”,
IsDisabled:是的,
持续时间:3
},
{
关键字:309,
值:“LOC”,
IsDisabled:错误,
持续时间:6
},
{
钥匙:485,
值:“TT”,
IsDisabled:是的,
持续时间:5
},
{
关键字:310,
值:“FOT”,
IsDisabled:是的,
持续时间:6
},
{
关键字:314,
值:“TS”,
IsDisabled:是的,
持续时间:7
}
]
];
var allTasks=[].concat.apply([],parentArray);
var={};
for(var i=0,len=allTasks.length;i控制台日志(分组)
您可以使用
spread
运算符对concat数组进行排序,然后使用
reduce
方法按键分组
让数组1=[
{键:313,值:“R/I”,IsDisabled:true,持续时间:1},
{键:312,值:“MEL”,IsDisabled:true,Duration:2},
{键:311,值:“SGH”,IsDisabled:false,持续时间:9},
{键:309,值:“LOC”,IsDisabled:true,持续时间:4},
{键:485,值:“TT”,IsDisabled:true,持续时间:5},
{键:310,值:“FOT”,IsDisabled:true,持续时间:6},
{键:314,值:“TS”,IsDisabled:true,持续时间:7}
]
设array2=[
{键:313,值:“R/I”,IsDisabled:true,持续时间:1},
{键:312,值:“MEL”,IsDisabled:true,Duration:2},
{键:311,值:“SGH”,IsDisabled:true,持续时间:3},
{键:309,值:“LOC”,IsDisabled:false,持续时间:6},
{键:485,值:“TT”,IsDisabled:true,持续时间:5},
{键:310,值:“FOT”,IsDisabled:true,持续时间:6},
{键:314,值:“TS”,IsDisabled:true,持续时间:7}
];
让容器=[…数组1,…数组2];
让result=container.reduce((acc,c)=>((acc[c.Key]=(acc[c.Key]|【】)).push(c),acc),{});

控制台日志(结果)
您可以使用
spread
运算符对concat数组进行排序,然后使用
reduce
方法按键分组
让数组1=[
{键:313,值:“R/I”,IsDisabled:true,持续时间:1},
{键:312,值:“MEL”,IsDisabled:true,Duration:2},
{键:311,值:“SGH”,IsDisabled:false,持续时间:9},
{键:309,值:“LOC”,IsDisabled:true,持续时间:4},
{键:485,值:“TT”,IsDisabled:true,持续时间:5},
{键:310,值:“FOT”,IsDisabled:true,持续时间:6},
{键:314,值:“TS”,IsDisabled:true,持续时间:7}
]
设array2=[
{键:313,值:“R/I”,IsDisabled:true,持续时间:1},
{键:312,值:“MEL”,IsDisabled:true,Duration:2},
{键:311,值:“SGH”,IsDisabled:true,持续时间:3},
{键:309,值:“LOC”,IsDisabled:false,持续时间:6},
{键:485,值:“TT”,IsDisabled:true,持续时间:5},
{键:310,值:“FOT”,IsDisabled:true,持续时间:6},
{键:314,值:“TS”,IsDisabled:true,持续时间:7}
];
让容器=[…数组1,…数组2];
让result=container.reduce((acc,c)=>((acc[c.Key]=(acc[c.Key]|【】)).push(c),acc),{});
控制台
taskTypeList: Array(7)
0: TaskType {Key: 313, Value: "R/I", IsDisabled: true, Duration: 1}
1: TaskType {Key: 312, Value: "MEL", IsDisabled: true, Duration: 2}
2: TaskType {Key: 311, Value: "SGH", IsDisabled: false, Duration: 9}
3: TaskType {Key: 309, Value: "LOC", IsDisabled: true, Duration: 4}
4: TaskType {Key: 485, Value: "TT", IsDisabled: true, Duration: 5}
5: TaskType {Key: 310, Value: "FOT", IsDisabled: true, Duration: 6}
6: TaskType {Key: 314, Value: "TS", IsDisabled: true, Duration: 7}
taskTypeList: Array(7)
0: TaskType {Key: 313, Value: "R/I", IsDisabled: true, Duration: 1}
1: TaskType {Key: 312, Value: "MEL", IsDisabled: true, Duration: 2}
2: TaskType {Key: 311, Value: "SGH", IsDisabled: true, Duration: 3}
3: TaskType {Key: 309, Value: "LOC", IsDisabled: false, Duration: 6}
4: TaskType {Key: 485, Value: "TT", IsDisabled: true, Duration: 5}
5: TaskType {Key: 310, Value: "FOT", IsDisabled: true, Duration: 6}
6: TaskType {Key: 314, Value: "TS", IsDisabled: true, Duration: 7}
0:
309: [TaskType,TaskType]
310: [TaskType,TaskType]
311: [TaskType,TaskType]
312: [TaskType,TaskType]
313: [TaskType,TaskType]
314: [TaskType,TaskType]
485: [TaskType,TaskType]