Javascript concat 2带有数组的对象并删除重复项(js)

Javascript concat 2带有数组的对象并删除重复项(js),javascript,arrays,concat,Javascript,Arrays,Concat,有两个数组:如下所示 1) 第一阵列 {day:mo, hours:[{id:1,color:grey},{id:2,color:grey},{id:3,color:grey},{id:4,color:grey}]} 2) 第二阵列 {day:mo, hours:[{id:1,color:white},{id:2,color:white},{id:3,color:white},{id:4,color:white},{id:5,color:white}]} 结果必须是 {day:mo, hou

有两个数组:如下所示

1) 第一阵列

{day:mo, hours:[{id:1,color:grey},{id:2,color:grey},{id:3,color:grey},{id:4,color:grey}]}
2) 第二阵列

{day:mo, hours:[{id:1,color:white},{id:2,color:white},{id:3,color:white},{id:4,color:white},{id:5,color:white}]}
结果必须是

{day:mo, hours:[{id:1,color:grey},{id:2,color:grey},{id:3,color:grey},{id:4,color:grey},{id:5,color:white}]}
所以我需要从2个数组中删除相同的值,就像在第一个数组中一样,然后对其进行压缩

试着这样做

clearArrFunc(arr1,arr2) {
    // do something
     for(var i in arr1){
     console.log(arr1[i]);
      for(var j in arr2)   {
        if(JSON.stringify(arr1[i].day) == JSON.stringify(arr2[j].day)) {
         delete arr2[j] ;
      }

       }

    }
  //  console.log(arr2);
    return arr1.concat(arr2);

    }

将两个数组合并,然后从结果中消除重复ID:

a=[{id:1,颜色:'grey'},{id:2,颜色:'grey'},{id:3,颜色:'grey'},{id:4,颜色:'grey'}]
b=[{id:1,颜色:'white'},{id:2,颜色:'white'},{id:3,颜色:'white'},{id:4,颜色:'white'},{id:5,颜色:'white'}]
结果=a
康卡特先生(b)
.filter((x,i,self)=>self.findIndex(y=>y.id==x.id)==i);

console.log(result)
Concat两个数组,然后从结果中消除重复ID:

a=[{id:1,颜色:'grey'},{id:2,颜色:'grey'},{id:3,颜色:'grey'},{id:4,颜色:'grey'}]
b=[{id:1,颜色:'white'},{id:2,颜色:'white'},{id:3,颜色:'white'},{id:4,颜色:'white'},{id:5,颜色:'white'}]
结果=a
康卡特先生(b)
.filter((x,i,self)=>self.findIndex(y=>y.id==x.id)==i);

log(result)
另一种方法是,从第二个数组中删除第一个数组中存在的值,并使用第一个数组对结果进行concat

varx=[{id:1,颜色:'grey'},{id:2,颜色:'grey'},{id:3,颜色:'grey'},{id:4,颜色:'grey'}];
变量y=[{id:1,颜色:'white'},{id:2,颜色:'white'},{id:3,颜色:'white'},{id:4,颜色:'white'},{id:5,颜色:'white'}];
var r=x.concat(y.filter(函数)obj){
return!x.some(函数(o){
返回o.id==obj.id;
});
}));

控制台日志(r)另一种方法是,从第二个数组中删除第一个数组中存在的值,并用第一个数组对结果进行加密

varx=[{id:1,颜色:'grey'},{id:2,颜色:'grey'},{id:3,颜色:'grey'},{id:4,颜色:'grey'}];
变量y=[{id:1,颜色:'white'},{id:2,颜色:'white'},{id:3,颜色:'white'},{id:4,颜色:'white'},{id:5,颜色:'white'}];
var r=x.concat(y.filter(函数)obj){
return!x.some(函数(o){
返回o.id==obj.id;
});
}));
控制台日志(r)使用Lodash()

使用Lodash()


这些不是数组,这些是对象。这些是数组,带有对象。这些不是数组,这些是对象。这些是数组,带有对象。我的对象有星期一。星期二星期三,所以需要比较第一个数组是否有星期一,从2个数组中删除值。如果不从第二个数组中添加星期一,则如果其中一个数组为空,则两个代码段都可以正常工作。我的对象具有星期一。星期二星期三,所以需要比较第一个数组是否有星期一,从2个数组中删除值。如果不从第二个数组中添加星期一,则如果其中一个数组为空,则两个代码段都可以正常工作,但首先需要按天进行比较。若第一个数组有星期一,那个么从第二个数组中删除==second的所有ID。并从第一个@БГБББББББББББББСБСССС撸撴撴撴撴撴撴撴撴撴撴撴,添加ID,如果天数不相同,您需要。若第一个数组有星期一,那个么从第二个数组中删除==second的所有ID。并从第一个@БГББББББББСССССБББСССССС撸撸撸撸,添加ID,如果天数不相同,您想要什么输出?我想要从第二个数组中删除所有小时==第一个数组小时,并将第一个数组小时推送到那里,如果我们没有
const _ = require('lodash');

const a = [{id: 1, color: "grey"},{id: 2, color: "grey"},{id: 3, color: "grey"},{id: 4, color: "grey"}];
const b = [{id: 1, color: "white"},{id: 2, color: "white"},{id: 3, color: "white"},{id: 4, color: "white"},{id: 5, color: "white" }];

const result = _.unionBy(o1.hours, o2.hours), 'id');
// result = [{id: 1, color: "grey"}, {id: 2, color: "grey"}, {id: 3, color: "grey"}, {id: 4, color: "grey"}, {id: 5, color: "white"}]