2017-07-27 4 views
0

Ich versuche, einen genauen Wert in einem 2D-Array zu finden, aber es funktioniert nicht. Ich habe keine Ahnung, wo ich einen Fehler gemacht habe. Ich muss nur die Zeichenfolge "Terminal - Gate:" finden.Den genauen Wert in 2D-Array finden

Hier ist mein Code:

for (i = 0; i < data.length; i++) { 
    for (j = 0; j < data[i].length; j++) { 
    var re = new RegExp('\\b(' + "Terminal - Gate:" + ')\\b'); 
    var checkWord = re.test(data[i][j]); 
     if (checkWord){ 
      console.log(data[i][j]); 
      console.log(data.indexOf(data[i])); 
      console.log(data.indexOf(data[j])); 
     } 
    } 

} 
+3

Können Sie eine Stichprobe von Eingabedaten bereitstellen? oder wahrscheinlich eine Geige oder Plünderer? –

Antwort

1

Es sieht aus wie Sie versuchen, eine Zeichenfolge zu finden, die 'Terminal - Gate:' enthält. Wenn dies der Fall ist, sollte dies funktionieren.

var data = [['abc', 'def'], ['abc', 'def'], ['abc', 'Terminal - Gate:', 'def', 'ghi']]; 
 

 
var i, j; 
 
var found = false; 
 

 
for (i = 0; i < data.length; i++) { 
 
    for (j = 0; j < data[i].length; j++) { 
 
     if (data[i][j].includes('Terminal - Gate:')) { 
 
      found = true; 
 
      break; 
 
     } 
 
    } 
 
    
 
    if (found) { 
 
     break; 
 
    } 
 
} 
 

 
if (!found) { 
 
    i = undefined; 
 
    j = undefined; 
 
} 
 

 
console.log(i, j);

Es wird aufhören, wenn es gefunden wird, und Sie werden die richtigen i und j Werte außerhalb der Schleife haben. Wenn es nicht gefunden wird, sind i und j beide undefined.

1

Bitte versuchen Sie diese folgende regex:

var re = new RegExp('\"Terminal - Gate:\"'); 

Hope it

0

Könnten Sie .includes() stattdessen hilft? So ...

for (let i = 0; i < data.length; i++) { 
    for (let j = 0; j < data[i].length; j++) { 
      if (data[i][j].includes('Terminal - Gate:')){ 
      console.log(data[i][j]); 
      console.log(data.indexOf(data[i])); 
      console.log(data.indexOf(data[j])); 
      } 
    } 
} 
Verwandte Themen