javascript - 如何从 2 个数组中仅返回不重复的对象
问题描述
我发现了很多类似的问题,但他们解释了如何删除重复的对象。在这种情况下,我需要创建一个不包含在两个数组中找到的对象的新数组。
const firstArray = [
{firstName: 'John', lastName: 'Doe'},
{firstName: 'Sara', lastName: 'Connor'},
{firstName: 'Mike', lastName: 'Hunt'},
{firstName: 'Steve', lastName: 'Irvine'}
];
const secondArray = [
{firstName: 'John', lastName: 'Doe'},
{firstName: 'Sara', lastName: 'Connor'}
];
上一个数据样本的预期结果应该是:
const result = [
{firstName: 'Mike', lastName: 'Hunt'},
{firstName: 'Steve', lastName: 'Irvine'}
];
解决方案
我将首先连接两个数组,然后使用some()在每个数组上搜索未出现在两个数组上的那些元素。请注意,此方法考虑了 the和 the都可以包含非重复对象的可能性。firstArray
secondArray
const firstArray = [
{firstName: 'John', lastName: 'Doe'},
{firstName: 'Sara', lastName: 'Connor'},
{firstName: 'Mike', lastName: 'Hunt'},
{firstName: 'Steve', lastName: 'Irvine'}
];
const secondArray = [
{firstName: 'John', lastName: 'Doe'},
{firstName: 'Sara', lastName: 'Connor'},
{firstName: 'Joseph', lastName: 'Muguera'}
];
let res = firstArray.concat(secondArray).filter(({firstName, lastName}) =>
{
let foundOnFirst = firstArray.some(
x => x.firstName === firstName && x.lastName === lastName
);
let foundOnSecond = secondArray.some(
y => y.firstName === firstName && y.lastName === lastName
);
return !(foundOnFirst && foundOnSecond);
});
console.log(res);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
推荐阅读
- ruby-on-rails - 如何在我的 rails 表单中更快地使用 select2 gem 从数据集中进行搜索?
- php - Laravel 5:在我的列迁移中添加新值
- java - 从服务器发送重定向到 Angular
- sql - SQl Server 将分隔字符串拆分为行
- bash - SMS 触发的 Bash 文件不会同时触发 GPIO
- json - 与另一个组件共享 JSON 数据
- c++ - 为了在 CUDA 内核中使用 math.h 函数,我无法理解 CUDA 文档
- string - 如果在tensorflow中该行为空,则跳过文本行
- reactjs - 如何获取和显示 API 内容 Onsubmit
- graph-databases - 从随机种子节点遍历图数据库