JavaScript中获取重复出现字符串的首次索引问题:无法获取"Query Response"索引的解决方法
问题排查与修复方案
你的代码有两个关键错误导致无法获取到预期的索引值,我帮你拆解并修正:
核心错误点
变量名不匹配
你声明的目标数据变量是output_pacs,但循环里遍历的却是output——如果output是未定义或空数组,循环根本不会执行,最终strutturaIndici自然是空的。数组元素访问语法错误
JavaScript中访问数组元素必须使用方括号[],而你写成了output(i),这种写法会被解释为调用函数output并传入参数i,而不是取数组的第i个元素。这会直接导致报错,后续代码无法正常执行。
修正后的代码
我帮你调整了变量名、修复了语法,还增加了过滤无效索引的逻辑(避免把没找到目标字符串时返回的-1存入数组):
var strutturaIndici = []; // 遍历正确的变量output_pacs for(var i = 0; i < output_pacs.length; i++) { // 用[]访问数组元素,修正语法错误 var indice_primo_carattere = output_pacs[i].indexOf("Query Response"); // 只保留找到目标字符串的有效索引 if(indice_primo_carattere !== -1) { strutturaIndici.push(indice_primo_carattere); } } logger.debug('StrutturaIndici:' + strutturaIndici);
额外优化建议
如果想让代码更简洁易读,可以使用forEach遍历:
var strutturaIndici = []; output_pacs.forEach(line => { const index = line.indexOf("Query Response"); if(index !== -1) { strutturaIndici.push(index); } }); logger.debug('StrutturaIndici:' + strutturaIndici);
排查小技巧
如果修正后还是没有结果,建议先确认output_pacs是否正确加载了文件内容:
logger.debug('output_pacs实际内容:' + output_pacs);
这样可以快速排查是不是数据源本身就有问题。
内容的提问来源于stack exchange,提问作者user14756410
相关产品推荐
相关产品推荐

