如何用JavaScript的includes方法检测URL是否包含多个指定字符串?
如何让URL检测函数支持多字符串匹配(任一存在即返回true)
原函数仅能检测单个字符串:
const doesItContain = () => { const url = window.location.href; return url.includes('/items'); };
要实现检测多个字符串且任一存在即返回true的需求,有两种简洁的实现方式:
方案1:传入匹配字符串数组
修改函数使其接收数组参数,利用Array.some()方法实现任一匹配即返回true:
const doesItContain = (targets) => { const url = window.location.href; // 遍历数组,找到第一个匹配项就立即返回true,无需遍历剩余元素 return targets.some(target => url.includes(target)); }; // 调用示例 doesItContain(['/items', '/users']);
方案2:直接传入多个参数(更灵活)
如果不想每次打包成数组,用ES6剩余参数语法让函数支持直接传入多个字符串:
const doesItContain = (...targets) => { const url = window.location.href; return targets.some(target => url.includes(target)); }; // 调用示例 doesItContain('/items', '/users');
...targets会自动把所有传入的参数收集成数组,后续逻辑和方案1完全一致。
可选:边界情况处理
如果需要处理未传入任何目标字符串的场景,可以添加判断避免无意义检测:
const doesItContain = (...targets) => { // 没有传入检测目标时直接返回false if (targets.length === 0) return false; const url = window.location.href; return targets.some(target => url.includes(target)); };
内容的提问来源于stack exchange,提问作者Leo Messi
相关产品推荐
相关产品推荐

