合并对象的分组2数组排除JavaScript上的重复项
我有两个有父数组和子数组的分组数组,我想合并这两个有相同父数组的数组,但我只复制了具有唯一顺序的子数组,我在internet上搜索了许多文章,但尚未找到解决方案。请帮帮我。 这是我的密码合并对象的分组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” }, { 垂直_
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中没有找到该项。