是否存在类似includes的函数可传入多个搜索字符串?
实现支持多关键词的字符串包含检查函数
原生的String.prototype.includes只接受单个搜索值和可选的起始位置参数,无法直接传入多个关键词。你可以通过以下两种方式实现需求:
1. 独立工具函数(推荐,避免污染原型)
如果不想修改原生String的原型,直接写一个独立函数:
// 检查字符串是否包含任意一个关键词 function includesAny(str, ...searchValues) { return searchValues.some(searchVal => str.includes(searchVal)); } // 检查字符串是否包含所有关键词 function includesAll(str, ...searchValues) { return searchValues.every(searchVal => str.includes(searchVal)); }
用法示例
const targetStr = "前端开发常用JavaScript框架"; // 检查是否包含任意关键词 console.log(includesAny(targetStr, "JavaScript", "Vue")); // true console.log(includesAny(targetStr, "Python", "Java")); // false // 检查是否包含所有关键词 console.log(includesAll(targetStr, "前端", "JavaScript")); // true console.log(includesAll(targetStr, "前端", "Vue")); // false
2. 扩展String原型(直接实现类似原生方法的调用方式)
如果你希望像原生方法一样直接在字符串上调用,可以扩展String的原型:
// 扩展includesAny方法:匹配任意关键词 if (!String.prototype.includesAny) { String.prototype.includesAny = function(...searchValues) { return searchValues.some(searchVal => this.includes(searchVal)); }; } // 扩展includesAll方法:匹配所有关键词 if (!String.prototype.includesAll) { String.prototype.includesAll = function(...searchValues) { return searchValues.every(searchVal => this.includes(searchVal)); }; }
用法示例
const targetStr = "前端开发常用JavaScript框架"; console.log(targetStr.includesAny("JavaScript", "Vue")); // true console.log(targetStr.includesAll("前端", "JavaScript")); // true
注意事项
- 扩展原生原型时最好先检查方法是否已存在,避免覆盖已有实现
- 剩余参数
...searchValues会自动收集所有传入的关键词,支持任意数量的搜索值
内容的提问来源于stack exchange,提问作者Marius
相关产品推荐
相关产品推荐

