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

JavaScript自定义字符串搜索函数返回错误结果如何修正

现有代码错误原因

现有逻辑未校验字符的连续顺序匹配规则:遍历输入字符串的每个字符时,会在整个目标字符串中查找所有相等的字符直接存入结果,不要求匹配位置连续、顺序对齐,所以会出现重复存入相同字符的异常输出。

修复实现

极简实现(调用JS原生方法)

直接用String.includes()判断子串是否存在:

const target = "hello";
function searchStr(s) {
  return target.includes(s) ? s : -1;
}
const res = searchStr("ello");
console.log('res', res) // 输出:ello

手动实现匹配逻辑

如果需要自行实现匹配算法,用逐位对齐匹配的逻辑实现:

const target = "hello";
const targetArr = [...target];

function searchStr(s) {
  const inputArr = [...s];
  const inputLen = inputArr.length;
  const targetLen = targetArr.length;
  // 目标串长度小于输入串,直接判定匹配失败
  if (targetLen < inputLen) return -1;

  // 遍历目标串所有可能的匹配起始位置
  for (let startIdx = 0; startIdx <= targetLen - inputLen; startIdx++) {
    let isMatch = true;
    // 逐位对比字符
    for (let i = 0; i < inputLen; i++) {
      if (targetArr[startIdx + i] !== inputArr[i]) {
        isMatch = false;
        break;
      }
    }
    if (isMatch) return s;
  }
  // 无匹配结果
  return -1;
}

const res = searchStr("ello");
console.log('res', res) // 输出:ello

内容的提问来源于stack exchange,提问作者Denny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:15:05