Делаем просто, ровно то, что спрошено в вопросе:
arr1.filter(n => arr2.includes(n)).length !== 0
// или
arr1.some(Set.prototype.has.bind(new Set(arr2)))
// или
new Set(arr1).size + new Set(arr2).size > new Set([ ...arr1, ...arr2 ]).size
Делаем сложно, решаем задачу в более общем виде - сделаем функцию, которая будет находить пересечения среди значений, выдаваемых двумя итераторами, причём под равенством значений может подразумеваться не непосредственное их равенство, а равенство некоторых производных значений:
function intersection(data1, data2, key = n => n) {
const getKey = key instanceof Function ? key : n => n[key];
const keys = new Set(Array.from(data2, getKey));
const result = [];
for (const n of data1) {
if (keys.has(getKey(n))) {
result.push(n);
}
}
return result;
}
// как применять в вашем случае
!!intersection(arr1, arr2).length
// другие примеры использования
intersection(Array(5).keys(), Array(3).keys()) // [0, 1, 2]
intersection('abcDe', 'cd', n => n.toLowerCase()) // ['c', 'D']
intersection([{id: 1}, {id: 2}, {id: 3}], [{id: 2}, {id: 4}], 'id') // [{id: 2}]