javascript includes() 不区分大小写

新手上路,请多包涵

我有一个字符串数组,我需要循环并检查另一个传入的字符串。

 var filterstrings = ['firststring','secondstring','thridstring'];
var passedinstring = localStorage.getItem("passedinstring");

for (i = 0; i < filterstrings.lines.length; i++) {
    if (passedinstring.includes(filterstrings[i])) {
        alert("string detected");
    }
}

如果 var passedinstring 具有类似 FirsTsTriNgfiRSTStrING 的字符串,我如何确保在此处忽略区分大小写(最好使用正则表达式)?

原文由 LegendDemonSlayer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.5k
2 个回答

您可以首先从 filterstrings 创建一个 RegExp

 var filterstrings = ['firststring','secondstring','thridstring'];
var regex = new RegExp( filterstrings.join( "|" ), "i");

然后 test 如果 passedinstring 在那里

var isAvailable = regex.test( passedinstring );

原文由 gurvinder372 发布,翻译遵循 CC BY-SA 4.0 许可协议

ES6 数组方法 filter() 可以将解决方案简化为一行。使用 includes() 方法判断一个数组的条目中是否包含某个值,并结合 toLowerCase() 方法将其转换为小写。

 var filterstrings = ['firststring','secondstring','thridstring'];
var passedinstring = localStorage.getItem("passedinstring");

// convert each string from filterstrings and passedinstring to lowercase
// to avoid case sensitive issue.
filteredStrings = filterstrings.filter((str) => str.toLowerCase().includes(passedinstring.toLowerCase())

原文由 Kamran Khatti 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题