下面的方法对我来说有点天真,所以我想知道是否有更好的方法。涉及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的对象