如何判断目标字符串数组是否包含关键词数组所有元素的子串?
解决方案:判断数组是否包含所有关键词子串
这个需求其实很清晰,核心就是验证关键词数组里的每一项,都能在目标数组的至少一个元素中找到匹配的子串。我来给你写个简单的实现方案,用JavaScript的话可以这样做:
核心实现代码
function hasAllSubstrings(targetArray, keywords) { // 确保每一个关键词都能在目标数组中找到匹配的子串 return keywords.every(keyword => { // 检查目标数组中是否存在至少一个元素包含当前关键词 return targetArray.some(element => element.includes(keyword)); }); }
测试你的示例场景
// 定义你给出的测试数组 const array1 = ["Lorem", "ipsum", "dolor", "sit", "amet"]; const array2 = ["Lorem", "ipsum"]; const keywords = ["ipsum", "dol"]; // 执行测试 console.log(hasAllSubstrings(array1, keywords)); // 输出 true console.log(hasAllSubstrings(array2, keywords)); // 输出 false
逻辑解释
keywords.every(...):遍历关键词数组,要求所有关键词都必须通过验证,只要有一个不满足,整个函数就返回falsetargetArray.some(...):针对单个关键词,检查目标数组中是否至少有一个元素包含该关键词作为子串,element.includes(keyword)是判断子串存在的核心方法
扩展:忽略大小写匹配
如果你的场景需要忽略大小写(比如关键词是"DOL"也能匹配"dolor"),可以修改判断逻辑,统一转成小写(或大写)后再比较:
function hasAllSubstringsIgnoreCase(targetArray, keywords) { return keywords.every(keyword => { const lowerKeyword = keyword.toLowerCase(); return targetArray.some(element => element.toLowerCase().includes(lowerKeyword) ); }); }
内容的提问来源于stack exchange,提问作者user9099485
相关产品推荐
相关产品推荐

