Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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
合并对象的分组2数组排除JavaScript上的重复项_Javascript_Arrays_Object - Fatal编程技术网

合并对象的分组2数组排除JavaScript上的重复项

合并对象的分组2数组排除JavaScript上的重复项,javascript,arrays,object,Javascript,Arrays,Object,我有两个有父数组和子数组的分组数组,我想合并这两个有相同父数组的数组,但我只复制了具有唯一顺序的子数组,我在internet上搜索了许多文章,但尚未找到解决方案。请帮帮我。 这是我的密码 var-groupOrder=[ { 集团时间街:“2019年4月25日”, 订单:[ { 垂直_id:“1”, 垂直_类:“A” }, { 垂直_id:“2”, 垂直_类:“B” } ] }, { 集团时间街:“2019年4月26日”, 订单:[ { 垂直_id:“1”, 垂直_类:“A” }, { 垂直_

我有两个有父数组和子数组的分组数组,我想合并这两个有相同父数组的数组,但我只复制了具有唯一顺序的子数组,我在internet上搜索了许多文章,但尚未找到解决方案。请帮帮我。 这是我的密码

var-groupOrder=[
{
集团时间街:“2019年4月25日”,
订单:[
{
垂直_id:“1”,
垂直_类:“A”
},
{
垂直_id:“2”,
垂直_类:“B”
}
]
},
{
集团时间街:“2019年4月26日”,
订单:[
{
垂直_id:“1”,
垂直_类:“A”
},
{
垂直_id:“2”,
垂直_类:“B”
},
{
垂直_id:“3”,
垂直_类:“C”
}
]
}
];
变量groupOrder2=[
{
集团时间街:“2019年4月26日”,
订单:[
{
垂直_id:“3”,
垂直_类:“C”
},
{
垂直_id:“4”,
垂直_类别:“D”
}
]
},
{
集团时间街:“2019年4月27日”,
订单:[
{
垂直_id:“1”,
垂直_类:“A”
},
{
垂直_id:“2”,
垂直_类:“B”
}
]
}
];
const combine=[…组顺序,…组顺序2];
const groupBy=合并减少((acc,cur)=>{
acc[当前组时间段]
?(附件[cur.group\u time\u str]。订单=[
…附件[cur.group\u time\u str]。订单,
…当前命令
])
:(acc[cur.group\u time\u str]=cur);
返回acc;
}, {});
console.log(groupBy)
正文{
字体系列:无衬线;
}

分组订单
您可以执行以下操作过滤掉当前订单以删除重复项

var-groupOrder=[
{
集团时间街:“2019年4月25日”,
订单:[
{
垂直_id:“1”,
垂直_类:“A”
},
{
垂直_id:“2”,
垂直_类:“B”
}
]
},
{
集团时间街:“2019年4月26日”,
订单:[
{
垂直_id:“1”,
垂直_类:“A”
},
{
垂直_id:“2”,
垂直_类:“B”
},
{
垂直_id:“3”,
垂直_类:“C”
}
]
}
];
变量groupOrder2=[
{
集团时间街:“2019年4月26日”,
订单:[
{
垂直_id:“3”,
垂直_类:“C”
},
{
垂直_id:“4”,
垂直_类别:“D”
}
]
},
{
集团时间街:“2019年4月27日”,
订单:[
{
垂直_id:“1”,
垂直_类:“A”
},
{
垂直_id:“2”,
垂直_类:“B”
}
]
}
];
const combine=[…组顺序,…组顺序2];
const groupBy=合并减少((acc,cur)=>{
acc[当前组时间段]
?(附件[cur.group\u time\u str]。订单=[
…附件[cur.group\u time\u str]。订单,

…cur.orders.filter(item=>acc[cur.group_time_str].orders.findIndex(corderer=>item['vertical_id']====corderer['vertical_id']]和&item['vertical_category']==corderer['vertical_category'])尝试减少第一个数组,仅获取不匹配的项,而不是在开始时合并数组:

const groupOrder=[{group_time_str:“2019年4月25日”,订单:[{vertical_id:“1”,vertical_category:“A”},{vertical_id:“2”,vertical_category:“B”},{group_time_str:“2019年4月26日”,订单:[{vertical_id:“1”,vertical_category:“A”},{vertical_id:“2”,vertical_categegegory:“B”};
const groupOrder2=[{group_time_str:“2019年4月26日”,命令:[{vertical_id:“3”,vertical_category:“C”},{vertical_id:“4”,vertical_category:“D”},{group_time_str:“2019年4月27日”,命令:[{vertical_id:“1”,vertical_categegory:“A”},{vertical_id:“2”,vertical_categegegegegory:“B”}];
const result=groupOrder.reduce((arr,g1)=>{
const g2match=groupOrder2.find(
g2=>g2.group\U time\U str==g1.group\U time\U str
);
如果(g2match){
const orders=g1.orders.filter(
g1o=>
!g2match.orders.find(
m=>
g1o.vertical\u id==m.vertical\u id&&
g1o.vertical\u类别===m.vertical\u类别
)
);
g2match.orders=[…g2match.orders,…orders];
返回arr;
}
返回[…arr,{…g1}];
}, []);

console.log([…result,…groupOrder2]);
这意味着我们没有在数组中找到该项。我尝试使用Rest API数据,该过程非常缓慢,需要花费更多时间,当数据较多时大约需要2分钟,这意味着当前项是唯一的,因为我们在arr中没有找到该项。