【问题标题】:JavaScript Array.find RegexJavaScript Array.find 正则表达式
【发布时间】:2018-03-30 19:26:34
【问题描述】:

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

例子

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

在本例中,索引 2 处的牛奶将是第一个匹配项,我想返回索引 2。

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

【问题讨论】:

    标签: javascript arrays ecmascript-6


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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);

      文档:

      【讨论】:

        【解决方案3】:

        改用.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);

        【讨论】:

          【解决方案4】:

          您可以从array2 创建一个正则表达式,然后使用Array.findIndex

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

          【讨论】:

            猜你喜欢
            • 2012-01-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多