intersection of two arrays

Benchmark created on


Test runner

Ready to run.

Testing in
TestOps/sec
my version
function findEqualElements(arr1, arr2) {
  const obj = {};
  const equalElements = [];

  let arrayMore;
  let arrayLess;

  if (arr1.length > arr2.length) {
    arrayMore = arr1;
    arrayLess = arr2;
  } else {
    arrayMore = arr2;
    arrayLess = arr1;
  }

  for (let i = 0; i < arrayMore.length; i++) {
    const elFromLess = arrayLess[i];
    const elFromMore = arrayMore[i];

    if (elFromLess) {
      obj[elFromLess] = obj[elFromLess] ? obj[elFromLess] + 1 : 1;
    }

    if (elFromMore && obj[elFromMore] > 0) {
      equalElements.push(elFromMore);
      obj[elFromMore] = obj[elFromMore] - 1;
    }
  }

  console.log(equalElements);

  return equalElements;
}
  
ready
yandex practicum version
function findEqualElements(arr1, arr2) {
  let i = 0;
  let j = 0;
  const result = [];

  while (i < arr1.length && j < arr2.length) {
    if (arr1[i] > arr2[j]) {
      j++;
    } else if (arr1[i] < arr2[j]) {
      i++;
    } else {
      result.push(arr1[i]);
      i++;
      j++;
    }
  }

  return result;
}

ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.