如何检查指定字符串是否为数组任意元素的子串?
判断字符串是否存在于数组元素中的几种方法
针对给定的字符串 s="abc" 和数组 arr=["pnq","dwksnn","inabcpi","poals"],以下是几种能让判断条件返回true的实现方法:
1. 用 Array.some() + String.includes()(推荐)
这是最简洁高效的写法,some() 会遍历数组,只要有一个元素满足条件就立即返回true,无需遍历全部元素:
const s = "abc"; const arr = ["pnq","dwksnn","inabcpi","poals"]; const result = arr.some(item => item.includes(s)); // result 为 true,因为"inabcpi"包含"abc"
2. 用 Array.find()
find() 会返回第一个符合条件的元素,将其转为布尔值即可得到结果:
const result = Boolean(arr.find(item => item.includes(s))); // 或用双感叹号强制转布尔:!!arr.find(item => item.includes(s))
3. 用 Array.filter()
filter() 会返回所有包含目标字符串的元素组成的数组,判断数组长度是否大于0即可:
const result = arr.filter(item => item.includes(s)).length > 0;
注意:这种方法会遍历完整个数组,性能略逊于some(),但结果准确。
4. 手动循环遍历
可以用传统的for循环或for...of循环,手动检查每个元素:
// for循环写法 function checkContains(arr, s) { for (let i = 0; i < arr.length; i++) { if (arr[i].includes(s)) { return true; } } return false; } const result = checkContains(arr, s); // for...of循环写法 function checkContains(arr, s) { for (const item of arr) { if (item.includes(s)) { return true; } } return false; } const result = checkContains(arr, s);
5. 用 Array.some() + String.indexOf()
如果是兼容旧环境(不支持includes()),可以用indexOf()替代,判断返回值不等于-1即表示包含:
const result = arr.some(item => item.indexOf(s) !== -1);
内容的提问来源于stack exchange,提问作者CodeBlaze
相关产品推荐
相关产品推荐

