首页 > 解决方案 > 如何测试数组中是否存在特定字符串

问题描述

晚上好,我正在尝试找到一种方法来搜索数组中的特定字符串,其中字符串都在不同的行上。

这是我的代码

this.importDataObject("MEDDIAGNOSISICD-10.txt", "C:/Users/dell/Documents/tab 
excel/MEDDIAGNOSISICD-10.txt");
var oFile = this.getDataObjectContents("MEDDIAGNOSISICD-10.txt");
var cFile = util.stringFromStream(oFile, "utf-8");
var fileArray = cFile.split('\n');
var Med = this.getField("Medications 1");
var CodeOne = this.getField("ICD 10 CODE 2 PGX");
var Index = fileArray.indexOf(Med.value);
var Call = fileArray[Index];

var i, Index;
for (i = 0; i < fileArray.length; i++) {  
  Index = fileArray[i].indexOf(Med.value);
  if(Index > -1) Cartographer = fileArray[i].split('\t');
  if(Index > -1) MedAnalysis = Cartographer[0];
  if(Index > -1) BrandAnalysis = Cartographer[1];
  if(Index > -1) DiagAnalysis = Cartographer[2];
  if(Index > -1) CodeAnalysis = Cartographer[3];
  if(Index > -1) CodeSearch = CodeAnalysis.search("F33.0");  
  if(Index > -1 && CodeSearch != -1) CodeOne = "F33.0";
  if(Index > -1) console.println(CodeSearch);
}

如果您打印出 CodeSearch,则结果分别为 -1 和 0,分别位于不同的行上。
如何搜索阵列中的所有行,或者至少能够查看是否可以先扫描 F33.0。

标签: javascript

解决方案


使用数组find方法:

var fileLine = fileArray.find(line => line.includes(Med.value) && line.includes("F33.0"));
if (fileLine) {
    [MedAnalysis, BrandAnalysis, DiagAnalysis, CodeAnalysis] = fileLine.split("\t");
    if (CodeAnalysis.includes("F33.0")) {
        CodeOne = "F33.0";
    }
}

推荐阅读