Для двух массивов строк или чисел алгоритм был бы такой:
- отсортировать оба по возрастанию;
- взять нулевые элементы и сравнить, кто больше;
- брать следующее значение из того массива, где было мЕньшее;
- так двигаться до конца одного из массивов или первого найденного равенства.
Можно применить алгоритм, зная особенности именно этой задачи. Известно, что полей два, называются id и item, значения у них целые. Сделаем из каждого массив псевдо-хэшей, чтобы вместо массива объектов иметь дело с массивом строк.
function haveCommon(a,b) {
var phash = function(e){ return '' + e.id + '.' + e.item }
,ha = a.map(phash).sort()
,hb = b.map(phash).sort()
,ia = 0
,ib = 0
;
while( ia<ha.length && ib<hb.length) {
if( ha[ia] > hb[ib]) ib++;
else if( ha[ia] < hb[ib]) ia++;
else return true;
}
return false;
}
haveCommon( [{"id":1, "item": 213}]
,[{"id":1, "item": 213}, {"id":78, "item": 21}, {"id":19, "item": 13}]
) // true