JS如何统计两个字符串相同位置的匹配字符数量?
问题原因分析
- 你当前的实现逻辑仅判断字符是否在另一个字符串中存在,完全没有用到字符的位置索引,自然无法校验同位置是否匹配,刚好是你不需要的「统计共有的错位字符」逻辑,完全不符合需求
- 重复定义了两次
second函数,且函数没有设计入参,直接依赖全局变量,灵活性差 - 最终通过长度差计算的结果是两个字符串的共有字符总数,和位置匹配要求无关
正确实现方案
核心思路是遍历两个字符串的相同索引位置,逐一对比该位置的字符是否相等,统计匹配的次数即可,同时兼容两个字符串长度不一致的场景:
function countSamePositionChar(str1, str2) { // 取两个字符串的最小长度,超出的部分无对应位置无需对比 const minLength = Math.min(str1.length, str2.length); let matchCount = 0; for (let i = 0; i < minLength; i++) { if (str1[i] === str2[i]) { matchCount++; } } return matchCount; } // 测试你的示例 const str1 = "sterile"; const str2 = "meeting"; console.log(countSamePositionChar(str1, str2)); // 输出2
如果偏好数组方法的简洁写法也可以用以下版本:
const countSamePositionChar = (str1, str2) => Array.from(str1).reduce((count, char, index) => count + (char === str2[index] ? 1 : 0), 0 );
结果验证
你给出的示例中,sterile和meeting两个字符串:
- 索引3的位置都是
e - 索引5的位置都是
i
总共有2个位置匹配,和你需要的输出结果完全一致。
内容的提问来源于stack exchange,提问作者Dannie
相关产品推荐
相关产品推荐

