array.includes 使用正则表达式返回 false

Posted

技术标签:

【中文标题】array.includes 使用正则表达式返回 false【英文标题】:array.includes returns false using regex 【发布时间】:2018-08-22 22:07:09 【问题描述】:

我有这个数组:

array = ['S2B_MSIL1C_20180310T041559_N0206_R090_T46QEK_20180310T075716.SAFE'];

这个正则表达式:

regex = new RegExp('S2B_MSIL1C_20180310T041559_N0206_R090_T46QEK_20180310T075716' + '.SAFE','g');

当我使用 array.includes(regex); 时,false 被返回。我错过了什么吗?

【问题讨论】:

你想达到什么目的? Array.includes() 不会执行正则表达式匹配 array 包含一个String,您希望它包含一个Regexp 正如@RaR 评论的那样,array.includes 不使用正则表达式,请在此处查看更多信息:developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 【参考方案1】:

使用Array.some

var yourRegex = /pattern/g ;
var atLeastOneMatches = array.some(e => yourRegex.test(e));

Array.some 在数组中的第一个返回true 后返回true。如果遍历整个数组而没有true,则返回false。

【讨论】:

甚至array.some(yourRegex.test);【参考方案2】:

RgExps 不用于在数组上搜索,include 方法用于查找所需的对象是否包含在数组中。在这里,您将 Regex 对象传递给您的 include 方法,因此它告诉您数组中没有包含 regex 对象。

您必须执行以下操作之一:

array.includes('S2B_MSIL1C_20180310T041559_N0206_R090_T46QEK_20180310T075716' + '.SAFE');

var yourRegex = /pattern/g ;
for(var i = 0 ; i<arr.length ; i++)

    if(yourRegex.test(arr[i]))
    
        //Founded
        return true;
    

【讨论】:

以上是关于array.includes 使用正则表达式返回 false的主要内容,如果未能解决你的问题,请参考以下文章

array.includes的使用

includes() && indexOf

使用 Array.includes() 和测试重复项的 JavaScript 问题

es7新特性 includes用法

javascript array.includes在反应中不起作用

浏览器支持 array.includes 和替代品