2012-02-29 2 views
1

내가 더 많은 항목이JavaScript 배열에서 정규 표현식 조회 값을 어떻게 할 수 있습니까?

[ {name:"value1", action:"U"}, {name:"text2", action:"d"} ] 

와 유사한 객체의 배열을 말해봐.

나는 이것에서 값을 찾아보고 싶지만, 스너프 (snafu)로 목록의 단어가 "value1을 찾아보고 싶다"라는 문자열에 있는지 확인하고 해당 인덱스 번호를 반환하고 싶습니다. 어떻게 접근 할 수 있을까요? 그게 중요한 경우 Node.JS에서 실행됩니다.

+1

루프 - 루프가 좋습니다. – epascarello

답변

1

epascarello가 지적했듯이, 단순히 색인을 얻는 함수에서 싸서 for 루프를 수행하면 찾고있는 것을해야합니다. 당신이 데이터를 조작 할 수있는 다른 방법을 찾고 있다면

var a = [ {name:"value1", action:"U"}, {name:"text2", action:"d"} ]; 

function getIndex(query, arr) { 
    var reg = RegExp(query); 

    for (var i = 0, l = arr.length; i < l; i++) { 
     var item = arr[i]; 
     if (reg.test(item.name)) return i; 
    } 
    return false; 
} 

var index = getIndex('text', a); 

, 당신은 underscore에서 살펴 봐야 할 수 있습니다.

편집 : 나는 당신의 초기 질문을 조금 잘못 보았고 @pimvdb에서 탈출구 권고안을 기록했다. 이것은 아마도 당신이 원하는 것 이상의 것입니다.

var a = [ {name:"value1", action:"U"}, {name:"text2", action:"d"} ]; 

function getIndex(query, arr) { 
    query = escape(query); 
    for (var i = 0, l = arr.length; i < l; i++) { 
     var item = arr[i], 
      reg = RegExp(escape(item.name)); 
     if (reg.test(query)) return i; 
    } 
    return false; 
} 

var index = getIndex('I want to look up value1', a); 
+0

''text ''는 잘 작동하지만이 방법으로 특별한 regexp 문자를 두 번 이스케이프하는 것을 잊지 마십시오. – pimvdb

+0

오늘 밤 이걸보아야합니다. 그게 효과가 있다면 알려 드리겠습니다. –