如何使用JavaScript对比两个字符串查找差异并返回缺失的单词
原代码问题排查
- 调用
mainArr.toLowerCase()属于语法错误:toLowerCase是字符串专属方法,拆分后的mainArr是数组类型,无法直接调用该方法 subArr.toLowerCase.includes(x)存在两处错误:一是数组不能直接调用toLowerCase,二是方法调用缺少括号,语法不合法- 函数直接依赖外部全局变量
main和sub,复用性差
正确实现代码
严格大小写匹配版本
要求单词大小写完全一致才判定为匹配,实现如下:
let main = "i am really calm at this moment"; let sub = "am this"; function missingWords(mainStr, subStr) { const mainWords = mainStr.split(" "); const subWords = subStr.split(" "); // 过滤出主字符串中不在子字符串里的单词 return mainWords.filter(word => !subWords.includes(word)); } console.log(missingWords(main, sub)); // 输出结果:["i", "really", "calm", "at", "moment"]
大小写不敏感匹配版本
如果需要忽略大小写判定匹配(例如Am和am判定为同一个单词),可以用以下实现:
function missingWords(mainStr, subStr) { const mainWords = mainStr.split(" "); // 子字符串单词统一转小写存储,减少重复转换开销 const subLowerWords = subStr.split(" ").map(word => word.toLowerCase()); return mainWords.filter(word => !subLowerWords.includes(word.toLowerCase())); }
内容的提问来源于stack exchange,提问作者One of Stones
相关产品推荐
相关产品推荐

