Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Quickest way to check if 2 arrays contain same values in javascript

Is there a quicker or more efficient way to check that two arrays contain the same values in javascript?

Here is what I'm currently doing to check this. It works, but is lengthy.

    var arraysAreDifferent = false;
    for (var i = 0; i < array1.length; i++) {
      if (!array2.includes(array1[i])) {
        arraysAreDifferent = true;
      }
    }
    for (var i = 0; i < array2.length; i++) {
      if (!array1.includes(array2[i])) {
        arraysAreDifferent = true;
      }
    }
like image 431
GNG Avatar asked Oct 15 '25 04:10

GNG


1 Answers

To reduce computational complexity from O(n ^ 2) to O(n), use Sets instead - Set.has is O(1), but Array.includes is O(n).

Rather than a regular for loop's verbose manual iteration, use .every to check if every item in an array passes a test. Also check that both Set's sizes are the same - if that's done, then if one of the arrays is iterated over, there's no need to iterate over the other (other than for the construction of its Set):

const arr1Set = new Set(array1);
const arr2Set = new Set(array2);
const arraysAreDifferent = (
  arr1Set.size === arr2Set.size &&
  array1.every(item => arr2Set.has(item))

);
like image 152
CertainPerformance Avatar answered Oct 19 '25 01:10

CertainPerformance



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!