Немного оптимизировал
var a1 = [1, 2, 3, 4, 5];
var a2 = [2, 4, 4, 2];
var comparing = function (ar1, ar2) {
var a, b, i, buf = {};
ar1.length < ar2.length ? (a = ar1, b = ar2) : (a = ar2, b = ar1);
for (i = 0; i < a.length; i++) buf[a[i]] = 1;
for (i = 0; i < b.length; i++) {
if(buf[b[i]]) return true;
}
return false;
}
alert(comparing(a1, a2));
алгоритм такой
1. Сравниваем длину массивов
2. Из меньшего делаем объект(алфавит) с оригинальными значениями. При таком подходе мы быстрее переходим непосредственно к нахождению первого вхождения. Но, это как бабка надвое гадала может в конечном результате привести к увеличению операций для поиска. В некоторых ситуациях следовало из массивов делать 2 объекта с оригинальными значениями. И сравнивать уже их.
3. Соответственно поиск совпадающего значения
http://javascript.ru/php/array_diff_key
http://javascript.ru/php/array_diff
Как вариант компактного
var a1 = [1, 2, 3, 4, 5];
var a2 = [2, 4, 4, 2];
var comparing = function (a, b) {
var i, buf = {};
for (i = 0; i < a.length; i++) buf[a[i]] = 1;
for (i = 0; i < b.length; i++) if (buf[b[i]]) return true;
return false;
};
alert(comparing(a1, a2));