如何判断文本是否包含列表中的完整名称(JS/jQuery实现)
解决方案:检查文本中是否包含完整名称子串
看起来你需要的是判断待检测文本里是否存在name_list中的某一个完整名称作为连续子串——而不是检查文本是否是名称列表里的项,也不是匹配部分字符。之前用数组includes方法不符合需求,应该是搞反了检查方向啦😉
实现代码
function do_some_stuff(name_list, text_be_checked) { // 遍历名称列表,只要有一个名称是文本的子串就返回true return name_list.some(name => text_be_checked.includes(name)); }
验证示例
我们来测试你给出的所有场景:
const name_list = ['Annie','John','Lyam','Mary']; // 示例1:文本就是完整名称 console.log(do_some_stuff(name_list, 'Annie')); // true ✅ // 示例2:只有名称的一部分,没有完整的Annie console.log(do_some_stuff(name_list, 'Ann')); // false ✅ // 示例3:文本包含完整的Annie(前面有数字) console.log(do_some_stuff(name_list, '1Annie')); // true ✅ // 示例4:文本里的Annie被数字打断,不是完整子串 console.log(do_some_stuff(name_list, 'An2nie')); // false ✅ // 示例5:文本包含完整的John console.log(do_some_stuff(name_list, 'Anni_John')); // true ✅
补充说明
Array.some()会遍历数组中的每个元素,只要有一个元素满足条件就立即返回true,不用遍历完所有元素,效率不错- 如果需要兼容IE这类不支持
String.includes()的老浏览器,可以替换成indexOf判断:
function do_some_stuff(name_list, text_be_checked) { return name_list.some(name => text_be_checked.indexOf(name) !== -1); }
内容的提问来源于stack exchange,提问作者David Foie Gras
相关产品推荐
相关产品推荐

