JSFiddle - React, Tailwind, and code Playground

by asdf

HTML

<!-- Given three arrays sorted in non-decreasing order, print all common elements in these arrays.
ar1 = {1, 5, 10, 20, 40, 80}
ar2 = {6, 7, 20, 80, 100}
ar3 = {3, 4, 15, 20, 30, 70, 80, 120}
Output: 20, 80

ar1 = {1, 5, 5}
ar2 = {3, 4, 5, 5, 10}
ar3 = {5, 5, 10, 20}
Outptu: 5, 5

JavaScript

function getIntersection(arr1, arr2, arr3) {
	var intersec = [];
  var arr1Map = {};
  var firstIntersec = {};
  for (var i=0; i<arr1.length; i++) {
  	if (!arr1Map.hasOwnProperty(arr1[i])) {
    	arr1Map[arr1[i]] = 1;
    } else {
    	arr1Map[arr1[i]] += 1;
    }
  }
  for (var j=0; j<arr2.length; j++) {
    if (arr2[j] <= arr1[arr1.length-1]) {
			if (arr1Map.hasOwnProperty(arr2[j]) && arr1Map[arr2[j]]>0) {
        if (!firstIntersec.hasOwnProperty(arr2[j])) {
          firstIntersec[arr2[j]] = 1;
        } else {
          firstIntersec[arr2[j]] += 1;
        }
        arr1Map[arr2[j]] -= 1;
      }
    } else {
    	break;
    }
  }
  for (var k=0; k<arr3.length; k++) {
    if (arr3[k] <= arr1[arr1.length-1]) {
			if (firstIntersec.hasOwnProperty(arr3[k]) && firstIntersec[arr3[k]]>0) {
        intersec.push(arr3[k]);
        firstIntersec[arr3[k]] -= 1;
      }
    } else {
    	break;
    }
  }
	return intersec;
}
var ar1 = [1, 5, 10, 20, 40, 80], 
ar2 = [6, 7, 20, 80, 100],
ar3 = [3, 4, 15, 20, 30, 70, 80, 120],
ar12 = [1, 5, 5],
ar22 = [3, 4, 5, 5, 10],
ar32 = [5, 5, 10, 20];
console.log(getIntersection(ar1, ar2, ar3));
console.log(getIntersection(ar12, ar22, ar32));