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

如何简化JavaScript程序?优化PDF检索重复变量与if else逻辑

代码精简方案

核心优化思路

  • 抽离重复的检索逻辑为独立工具函数,避免重复代码
  • 用数组批量存储所有PDF的检索结果,无需单独定义几十个变量
  • 支持自动识别页面内的PDF元素,新增PDF无需修改JS代码

优化后完整代码

// 独立检索逻辑函数,传入待检索文本和关键词,返回检索结果
function getSearchResult(content, searchStr) {
  const strLen = searchStr.length;
  const maxCount = 10;
  let gefunden = 0;
  let count = 0;
  let currentPos = 0;
  const contentLen = content.length;
  while (currentPos <= contentLen) {
    const hitPos = content.indexOf(searchStr, currentPos);
    if (hitPos === -1) break;
    gefunden = 1;
    count++;
    if (count > maxCount) {
      count = "Mehr als 10";
      break;
    }
    currentPos = hitPos + strLen;
  }
  return { gefunden, count };
}
function Suche(str) {
  // 自动获取所有id以pdf开头的元素,新增PDF只要id符合规则即可自动纳入检索
  const pdfElements = document.querySelectorAll('[id^="pdf"]');
  // 按pdf序号排序,避免选择器返回顺序错乱
  const sortedPdfs = Array.from(pdfElements).sort((a, b) => {
    const numA = parseInt(a.id.replace('pdf', ''));
    const numB = parseInt(b.id.replace('pdf', ''));
    return numA - numB;
  });
  // 检索结果存储数组,索引对应PDF序号-1,比如results[0]对应pdf1的结果
  const results = sortedPdfs.map(pdfEl => {
    return getSearchResult(pdfEl.innerHTML, str);
  });
  /* 后续使用结果的示例:
  要拿pdf3的gefunden值:results[2].gefunden
  要拿pdf5的count值:results[4].count
  要遍历所有结果:results.forEach((res, index) => {
    const pdfNum = index + 1;
    console.log(`pdf${pdfNum} 是否命中:${res.gefunden},命中次数:${res.count}`);
  })
  */
  // 如果你需要保留原来的全局变量赋值(兼容旧代码后续逻辑),可以加下面这段:
  // results.forEach((res, index) => {
  //   const num = index + 1;
  //   window[`p${num}`] = sortedPdfs[index].innerHTML;
  //   window[`gefunden${num}`] = res.gefunden;
  //   window[`count${num}`] = res.count;
  // })
}

优化说明

  • 替换了原代码里重复17次的检索逻辑,检索规则修改只需调整getSearchResult函数即可
  • 无需手动维护p、gefunden、count三个系列的几十个变量,全部结果存在results数组里统一管理
  • 新增PDF时只需在页面新增id为pdf[序号]的元素,不需要修改JS代码就能自动纳入检索范围
  • 修复了原代码pdf2检索逻辑中误写count1的隐性bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:27:03