Hey Devs 👨🏼💻! Today we will discuss about one problem that often mentioned in a interview, how to find intersection of two arrays. Who knows maybe in your future you will get asked this question too. Being prepared is the key for successful interview. Without further ado, let's jump right in!
Let's analyze the task to solve:
"Assuming an input of two number arrays, return an array that is composed of numbers they have in common."
We also must consider the constraint for this problem: "A number might appear more than once. If it appears twice in each array, the resulting array will have two instances of the same number."
Before we start to write the code, usually what I do is create a pseudocode of how to solve the problem to give us a big picture on how to solve it. In this particular case I want to solve it using Set
array_1 = [1,2,3,1,2,1,5,7] array_2 = [2,1,4,8,3] function(array_1, array_2): set_1 = create a new set loop array_1: push the value of each val of array_1 into set_1 intersection_set = create a second set (for storing our intersected value) loop through array_2: check if val of array_2 is on set_1: push val of array_2 into intersection_set return array from intersection_set
I will explain what happen what happen in this logic.
First of all we will use Set
to make create an unique value. If we insert a duplicate value into Set
it will be ignored since we already have the same value in our Set
.
The main logic to solve this problem is simple, We need two Set
. The first Set
will hold unique values from the first input Array, and second Set
will hold value for the actual intersected values from both arrays. And later on we just need to transfrom the value from intersected Set
into Array.
Check the implementation of our logic below:
function intersection(arr1, arr2) { let firstSet = new Set(); for (val of arr1) { firstSet.add(val); } let intersectionSet = new Set(); for (let val of arr2) { if (firstSet.has(val)) { intersectionSet.add(val); } } return Array.from(intersectionSet); }
There are multiple ways to solve this problem. I choose to use Set
because it make the code so much clean and easy to read. Feel free to explore to use another method to solve this problem. I hope this short article will help you in the future! Good luck Devs. ✨