I am using React for this, but the concept is in javascript. So hopefully I can leave React code out for simplicity sake.
I have two arrays that I need to filter out. My
You can use vanilla js for this one. When you do this loop, check out the comparisons you are making:
Iterations (omitting ID): ArrayOne vs ArrayTwo
If your elements are always going to be in order, you can loop over the first array and build out a binary search to quickly find elements in the second. This brings your time complexity to o(n * log(n))
and will be better in the long run. If you're just looking to hit MVP, you can do this:
const myFilter = (arrayOne, arrayTwo) => {
return arrayOne.map((objectOne) => {
// Using findIndex over includes to be able to pass callback
// to compare the IDs
// returns -1 if not found
const matchIndex = arrayTwo.findIndex((objectTwo) => {
return objectOne.id === objectTwo.id
})
if (matchIndex >= 0) {
return Match
} else {
return NoMatch
}
})
}
Your time complexity will be o(n^2)
in this approach, but that may be the best case depending on your circumstances. You can also use a temporary data structure, such as a Set to get o(n)
time with the tradeoff of o(n)
space.