4

I have 2 arrays of keywords. I need to figure out the index of the first keyword in array 1 that matches any of the keywords in array 2.

Examples

array1 = ['spinach', 'avocado', 'milk', 'beans', 'ham', 'eggs', 'cheese'];
array2 = ['cheese', 'milk'];

In this example, milk at index 2 would be the first match, and I want to return the index of 2.

Can I use array.find() to return the index of the first match, if each element is compared to array2 using regex?

0

4 Answers 4

3

You could use Array#findIndex and check the second array with Array#includes.

var array1 = ['spinach', 'avocado', 'milk', 'beans', 'ham', 'eggs', 'cheese'],
    array2 = ['cheese', 'milk'];
    
console.log(array1.findIndex(v => array2.includes(v)));

Sign up to request clarification or add additional context in comments.

Comments

2

You can find matching index using findIndex() and includes():

let index = array1.findIndex(s => array2.includes(s));

Demo:

let a1 = ['spinach', 'avocado', 'milk', 'beans', 'ham', 'eggs', 'cheese'],
    a2 = ['cheese', 'milk'];

let index = a1.findIndex(s => a2.includes(s));

console.log(index);

Docs:

Comments

1

Use .findIndex instead:

const array1 = ['spinach', 'avocado', 'milk', 'beans', 'ham', 'eggs', 'cheese'];
const array2 = ['cheese', 'milk'];
const foundIndex = array1.findIndex(elm => array2.includes(elm));
console.log(foundIndex);

Comments

1

You could create a regular expression from array2 and then use Array.findIndex:

var re = new RegExp('^'+array2.join('|')+'$');
var found = array1.findIndex(function (e) { return re.test(e); });

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.