使用数据集中的递归搜索2D数组模式

时间:2012-06-29 14:41:03

标签: javascript regex pattern-matching

有人可以就使用javascript在CSV表格/数据集中搜索模式的更好方法提出一些建议吗?

var dataset= [[0, 0, 0], [0, 1, 1], [0, 1, 1]];
var pattern = [[0, 0, 0], [0, 1, 1], [0, 1, 1]];
arrex(dataset, pattern, 0, 0);

arrex = function(dataset, pattern, row, column) {
  if(dataset[row][column] == pattern[row][column] || patern[row][column] == "_") { // _ is the dont care case
    if(dataset[row].length-1 == column && dataset.length-1 == row){ 
      return true; // final case everything matched!!
    } else if (dataset[row].length > column+1) {
      return arrex(dataset, pattern, row, column+1); 
    } else {
      return arrex(dataset, pattern, row+1, 0); // check next row
    }
  } else {
    return false;
  }
}

任何建议都很棒......我特别感兴趣的是将数组转换为字符串,然后进行字符串比较。

1 个答案:

答案 0 :(得分:1)

好吧,假设模式与数据集的大小相同并且包含0,1或“_”,那么它就是一个内容:

var dataset= [[0, 0, 0], [0, 1, 1], [0, 1, 1]];
var pattern = [[0, 0, 0], ["_", 1, 1], [0, 1, 1]];

var match= dataset.join('').test(new RegExp('^' + pattern.join('').replace(/_/, '.') + '$'));

console.log(match);