我有2个关键字数组。我需要弄清楚数组1中与数组2中的任何关键字匹配的第一个关键字的索引。
实施例
array1 = ['spinach', 'avocado', 'milk', 'beans', 'ham', 'eggs', 'cheese'];
array2 = ['cheese', 'milk'];
在此示例中,索引为2的牛奶将是第一个匹配,我想返回索引2.
如果使用正则表达式将每个元素与array2进行比较,我可以使用array.find()返回第一个匹配的索引吗?
答案 0 :(得分:2)
您可以使用findIndex()
和includes()
找到匹配的索引:
let index = array1.findIndex(s => array2.includes(s));
<强>演示:强>
let a1 = ['spinach', 'avocado', 'milk', 'beans', 'ham', 'eggs', 'cheese'],
a2 = ['cheese', 'milk'];
let index = a1.findIndex(s => a2.includes(s));
console.log(index);
&#13;
<强>文档:强>
答案 1 :(得分:2)
您可以使用Array#findIndex
并使用Array#includes
检查第二个数组。
var array1 = ['spinach', 'avocado', 'milk', 'beans', 'ham', 'eggs', 'cheese'],
array2 = ['cheese', 'milk'];
console.log(array1.findIndex(v => array2.includes(v)));
&#13;
答案 2 :(得分:1)
改为使用.findIndex
:
const array1 = ['spinach', 'avocado', 'milk', 'beans', 'ham', 'eggs', 'cheese'];
const array2 = ['cheese', 'milk'];
const foundIndex = array1.findIndex(elm => array2.includes(elm));
console.log(foundIndex);
答案 3 :(得分:0)
您可以从array2
创建正则表达式,然后使用Array.findIndex
:
var re = new RegExp('^'+array2.join('|')+'$');
var found = array1.findIndex(function (e) { return re.test(e); });