How to filter an array with another array?
In this article, I would like to share with you some of the ways to filter array with another array. Below are some methods that I have learnt.
filter()
forEach()
Let’s take the below array for our learning,
let array1 = ["Boo", "Foo", "Zoo", "Doo", "Poo", "Noo"]; let array2 = ["Zoo", "Poo", "Loo", "Hoo"]; let filArray1 = []; let filArray2 = [];
1. filter()
One of my favorite methods. We are taking advantage of the .filter method provided by the Array.prototype. The method is returning a new array with all the elements that pass a specific test(written by us).
filArray1 = array1.filter(function(item) { return !array2.includes(item); }); filArray2 = array2.filter(function(item) { return !array1.includes(item); }); console.log(filArray1);//["Boo", "Foo", "Doo", "Noo"]; console.log(filArray2);//["Loo", "Hoo"];
You can use indexOf()
method also to check the array1 value is exists in array2 like below,
filArray1 = array1.filter(function(item) { return array2.indexOf(char) === -1; });
In Next Version Of JavaScript ES6, It is even cleaner when you use the arrow function (=>).
filArray1 = array1.filter(arr => !array1.includes(item));
2. forEach
The forEach()
method executes a provided function once for each array element.
array1.forEach(e => { if(!array2.includes(e)){ filArray1.push(e); } }); console.log(filArray1);//["Boo", "Foo", "Doo", "Noo"];