在2d数组中查找精确值

时间:2017-07-27 17:19:17

标签: javascript arrays node.js regex

我试图在2D数组中找到一个确切的值,但它不起作用。我不知道我犯了什么错误。我只需找到字符串“Terminal - Gate:”。

这是我的代码:

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 个答案:

答案 0 :(得分:1)

请尝试以下正则表达式:

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

希望有所帮助

答案 1 :(得分:1)

看起来您正在尝试查找包含'Terminal - Gate:'的字符串。如果是这种情况,这应该可行。

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);

它会在找到后停止,并且您将在循环外部获得正确的ij值。如果找不到,ij都将undefined

答案 2 :(得分:0)

您可以使用.includes()吗?像这样......

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]));
          }
  }
}