我有两个大对象,例如:
const array1 = [
{
userId: 83232932,
name: 'Tom',
profile_pic: 'http://..',
age: 24,
gender: 'F'
},
{
userId: 2413535,
name: 'Sam',
profile_pic: 'http://..',
age: 31,
gender: 'M'
}
]
和另一个几乎相等的数组。
这两个数组也可以具有数千个对象,例如20k。
我必须比较它们并找到第一个数组中的对象,而不是第二个数组中的对象
现在我正在做
const missing = array1.filter(function(item1) {
return !array2.some(function(item2) {
return item1.userId === item2.userId;
});
});
这可行,但是它会阻塞我的应用程序的用户界面几秒钟。
是否有更好的方法来过滤数组?还是应该查看进行比较的方式和时间?
答案 0 :(得分:6)
您可以使用Set
并进行检查以过滤第一个数组。
const
ids = new Set(array2.map(({ id }) => id)),
missing = array1.filter(({ id }) => !ids.has(id));