查找对象是否存在于两个数组之间的最佳方法



下面的方法对我来说有点天真,所以我想知道是否有更好的方法。涉及2个数组,它们包含我必须通过某个属性进行比较的对象:

function exists(objArray, id) {
var isFound = false;
objArray.forEach(obj => {
if (obj.Id == id)
isFound = true;
});
return isFound;
}
var array1, array2;
array1.forEach(obj => exists(array2, obj.Id));

请改用.some

const exists = (objArray, id) => objArray.some(obj => obj.Id === id);

(我强烈建议使用严格相等的===,如果可能的话,不要草率相等(

您可以通过传递比较器函数来检查两个数组是否有一个公共对象,从而使用lodash的differenceWith。

comparator(obj1, obj2){
return obj1.id !== obj2.id;
}
let arr1 = [{id: 1}]
let arr2 = [{id: 2}]
_.differenceWith(arr1, arr2, comparator)

如果没有匹配元素,则返回一个空数组,否则返回具有第一个数组的匹配id的对象

相关内容

最新更新