JavaScript Array.find正则表达式

时间:2018-03-30 19:26:35

标签: javascript arrays ecmascript-6

我有2个关键字数组。我需要弄清楚数组1中与数组2中的任何关键字匹配的第一个关键字的索引。

实施例

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

在此示例中,索引为2的牛奶将是第一个匹配,我想返回索引2.

如果使用正则表达式将每个元素与array2进行比较,我可以使用array.find()返回第一个匹配的索引吗?

4 个答案:

答案 0 :(得分:2)

您可以使用findIndex()includes()找到匹配的索引:

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

<强>演示:

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

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

console.log(index);
&#13;
&#13;
&#13;

<强>文档:

答案 1 :(得分:2)

您可以使用Array#findIndex并使用Array#includes检查第二个数组。

&#13;
&#13;
var array1 = ['spinach', 'avocado', 'milk', 'beans', 'ham', 'eggs', 'cheese'],
    array2 = ['cheese', 'milk'];
    
console.log(array1.findIndex(v => array2.includes(v)));
&#13;
&#13;
&#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); });