JavaScript中如何判断数组元素是否存在于指定字符串中?
如何判断字符串是否包含数组中的任意元素?
嘿,这个需求其实挺常见的,我来给你几种实用的实现方式,都能完美解决你的问题:
方法一:用数组some()方法(最简洁推荐)
some()方法天生就是干这个的——它会遍历数组,只要有一个元素满足你设定的条件,就立刻返回true,完全契合你“只要包含任意一个就返回true”的需求。搭配字符串的includes()方法,代码超简洁:
var value = "01,05,04,02,00"; var temp = ["00", "01", "02", "03"]; const checkHasMatch = (str, arr) => arr.some(item => str.includes(item)); console.log(checkHasMatch(value, temp)); // 输出:true
简单解释下:some()会逐个检查temp里的元素,只要value包含其中某一个,就马上停止遍历返回true,不用浪费时间走完全部数组,效率也很高。
方法二:for循环兼容旧环境
如果你的项目需要兼容比较老的JavaScript运行环境(比如不支持ES6箭头函数和some()),用传统的for循环也能轻松实现:
var value = "01,05,04,02,00"; var temp = ["00", "01", "02", "03"]; function checkHasMatch(str, arr) { for (var i = 0; i < arr.length; i++) { // 用indexOf判断字符串是否包含子串,找到就返回true if (str.indexOf(arr[i]) !== -1) { return true; } } // 遍历完都没匹配到,返回false return false; } console.log(checkHasMatch(value, temp)); // 输出:true
一些额外的小提示
- 如果你的数组元素里包含正则特殊字符(比如
.,*,?这类),别用正则匹配的方式,容易出意外;用上面的includes()或者indexOf()就很安全。 - 如果需要忽略大小写匹配,可以先把字符串和数组元素统一转成小写(或大写)再判断,比如:
str.toLowerCase().includes(item.toLowerCase())。
内容的提问来源于stack exchange,提问作者Piyush Kumar
相关产品推荐
相关产品推荐

