检查javascript中两个对象数组之间的区别

问题描述:

我需要一些帮助。如何在这种情况下获得差异数组:

I need some help. How can I get the array of the difference on this scenario:

var b1 = [
  { id: 0, name: 'john' }, 
  { id: 1, name: 'mary' }, 
  { id: 2, name: 'pablo' }, 
  { id: 3, name: 'escobar' } 
]; 

var b2 = [
  { id: 0, name: 'john' }, 
  { id: 1, name: 'mary' }
];

我想要差异数组:

// [{ id: 2, name: 'pablo' }, { id: 3, name: 'escobar' }]

最优化的方法是怎样的?

How is the most optimized approach?

我试图过滤减少的数组..某事在这一行:

I´m trying to filter a reduced array.. something on this line:

var Bfiltered = b1.filter(function (x) {
return x.name !== b2.reduce(function (acc, document, index) {
    return (document.name === x.name) ? document.name : false
},0)

});

console.log("Bfiltered", Bfiltered);
// returns { id: 0, name: 'john' }, { id: 2, name: 'pablo' }, { id: 3, name: 'escobar' } ]

谢谢,

机器人

.Filter() .some()函数将起作用

var b1 = [
  { id: 0, name: 'john' }, 
  { id: 1, name: 'mary' }, 
  { id: 2, name: 'pablo' }, 
  { id: 3, name: 'escobar' } 
]; 

var b2 = [
  { id: 0, name: 'john' }, 
  { id: 1, name: 'mary' }
];

var res = b1.filter(item1 => 
!b2.some(item2 => (item2.id === item1.id && item2.name === item1.name)))

console.log(res);