首页 > 解决方案 > 如何比较两个数组中的数据并在javascript中返回不匹配的数组?

问题描述

这是我的问题陈述。

我有两个数组

assignedArr = [{ id: 'abc1' }, { id: 'abc2' }, { id: 'abc3' }];

 unAssignedArr = [{ id: 'abc1' }, { id: 'abc2' }, { id: 'abc3'}, { id: 'abc4' }];

我必须将 assingedArr 与 unAssignedArr 进行比较,并返回不匹配的数组项。

例如,在上面的例子中,

结果应该是

   newArr = [{ id: 'abc4' }];

像苏...

任何建议都会非常有用

标签: javascript

解决方案


您可以使用Array.prototype.filter带有Array.prototype.some方法的数组来获得结果。

const assignedArr = [{ id: 'abc1' }, { id: 'abc2' }, { id: 'abc3' }];

const unAssignedArr = [
  { id: 'abc1' },
  { id: 'abc2' },
  { id: 'abc3' },
  { id: 'abc4' },
];

const ret = [
  ...unAssignedArr.filter((x) => !assignedArr.some((y) => x.id === y.id)),
  ...assignedArr.filter((x) => !unAssignedArr.some((y) => x.id === y.id)),
];
console.log(ret);


推荐阅读