Зачем циклы со счётчиком, когда есть
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/for...of?
Зачем p2, когда можно сразу сравнивать p1 и argument2[q]?
Если убрать всё лишнее и оформить в функцию, получим:
function comp(a1, a2) {
for (let p1 of a1) { for (let p2 of a2) { if (p1 == p2) { return false; } } }
return true;
}
Да, для больших массивов не оптимально. Но для массивов по 5 элементов будет работать быстрее, чем оптимальный вариант с O(n * log(n)).
А можно и с одним циклом:
function comp(a1, a2) {
for (let p1 of a1) { if (a2.includes(p1)) { return false; } }
return true;
}
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
Или в одну строчку без циклов и именованных функций:
result = a1.reduce((prev, cur) => !a2.includes(cur) && prev, true);
так?