Чтобы уменьшить вычислительную сложность с O(n ^ 2)
до O(n)
, используйте вместо этого наборы - Set.has
равно O(1)
, но Array.includes
равно O(n)
.
Вместо обычного for
Подробная ручная итерация l oop, используйте .every
, чтобы проверить, проходит ли каждый элемент в массиве тест. Также убедитесь, что размеры обоих множеств одинаковы - если это сделано, то, если один из массивов итерируется, нет необходимости перебирать другой (кроме как для построения его набора):
const arr1Set = new Set(array1);
const arr2Set = new Set(array2);
const arraysAreDifferent = (
arr1Set.size === arr2Set.size &&
array1.every(item => arr2Set.has(item))
);