I have a target array ["apple","banana","orange"]
, and I want to check if other arrays contain any one of the target array elements.
For example:
["apple","grape"] //returns true; ["apple","banana","pineapple"] //returns true; ["grape", "pineapple"] //returns false;
How can I do it in JavaScript?
You can try with Array. prototype. every() : The every() method tests whether all elements in the array pass the test implemented by the provided function.
Example 2: Check Array Using indexOf() In the above program, the indexOf() method is used with the if...else statement to check if an array contains a specified value. The indexOf() method searches an array and returns the position of the first occurrence. If the value cannot be found, it returns -1.
JavaScript Array includes()The includes() method returns true if an array contains a specified value. The includes() method returns false if the value is not found. The includes() method is case sensitive.
Vanilla JS
ES2016:
const found = arr1.some(r=> arr2.includes(r))
ES6:
const found = arr1.some(r=> arr2.indexOf(r) >= 0)
How it works
some(..)
checks each element of the array against a test function and returns true if any element of the array passes the test function, otherwise, it returns false. indexOf(..) >= 0
and includes(..)
both return true if the given argument is present in the array.
/** * @description determine if an array contains one or more items from another array. * @param {array} haystack the array to search. * @param {array} arr the array providing items to check for in the haystack. * @return {boolean} true|false if haystack contains at least one item from arr. */ var findOne = function (haystack, arr) { return arr.some(function (v) { return haystack.indexOf(v) >= 0; }); };
As noted by @loganfsmyth you can shorten it in ES2016 to
/** * @description determine if an array contains one or more items from another array. * @param {array} haystack the array to search. * @param {array} arr the array providing items to check for in the haystack. * @return {boolean} true|false if haystack contains at least one item from arr. */ const findOne = (haystack, arr) => { return arr.some(v => haystack.includes(v)); };
or simply as arr.some(v => haystack.includes(v));
If you want to determine if the array has all the items from the other array, replace some()
to every()
or as arr.every(v => haystack.includes(v));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With