Массив includes()
соответствует объекту, используя равенство ссылок, он не сравнивает свойства объекта. Итак, вам также нужен объект соответствия.
const overlap = arr1.some(i1 => arr2.some(i2 => matchObj(i1,i2)));
, и вам придется написать реализацию matchObj(obj1, obj2)
.
Вы также можете использовать loda sh 's isEqual()
или intersecttionWith()
метод:
const arr1 = [{color: 'red', shape: 'square'}, {color: 'blue', shape: 'circle'}, {color: 'green', shape: 'square'}];
const arr2 = [{color: 'red', shape: 'circle'}, {color: 'blue', shape: 'circle'}];
// check for overlap
const hasCommon = _.some(arr1, i1 => _.some(arr2, i2 => _.isEqual(i1, i2)));
console.log('hasCommon:', hasCommon);
// get common items
const commonItems = _.intersectionWith(arr1, arr2, _.isEqual);
console.log('commonItems:', commonItems);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>