You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:36:01