2012-06-29 2 views
0

누군가가 더 좋은 방법으로 자바 스크립트를 사용하여 CSV 테이블/데이터 세트에서 패턴을 검색 할 수있게 제안 할 수 있습니까?데이터 집합에서 재귀를 사용하여 2D 배열 패턴 검색

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

어떤 제안이 좋을까요 ... 저는 특히 배열을 문자열로 변환 한 다음 문자열 비교를하는 데 관심이 있습니다.

+0

패턴 데이터 세트와 동일한 크기이고, 1, 0을 포함하거나 "_" , 권리? 데이터 집합은 항상 2 차원입니까? – Searle

+0

일반적으로 데이터 집합은 탐지 할 패턴보다 큽니다 ... 저는 데이터 집합을 통해 다른 함수를 작성하려고합니다 ... 더 큰 데이터 집합을 파싱하여 청크로 파싱하여 패턴을 검색 할 수있는 제안이 있습니까? ? – htmlfarmer

답변

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

고마워요. 그걸 시험해 봅시다. 더 큰 데이터 세트 내부에서 패턴의 X, Y 좌표를 찾으려면 어떻게해야할까요? – htmlfarmer