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() 和测试重复项的 JavaScript 问题