2016-06-25 4 views
0

모든 키 업에서 json 데이터를 검색하려고합니다.json을 사용하여 json 데이터를 검색하는 방법

JSON :

{ 
"AB01": { 
    "foo": "bar", 
    "ID": "A1", 
    "PID": "Z09", 
    }, 
    "AB10": { 
    "foo10": "bar10", 
    "ID": "B10", 
    "PID": "Y08", 
    }, 
} 

jQuery를

$('input').on('keyup', function(){ 
    $.getJSON("ABc.json", function(data) { 
    var InputVal = $('input').val(); 
    var myExp = new RegExp(InputVal, "i"); 

    var results = []; 

    $.each(data, function(key, obj){ 
     if (obj.foo.search(new RegExp(InputVal,"i")) != -1) { 
      results.push(obj); 
     }  
    }); 

    for(var i=0; i< $(results).length; i++) 
    { 
    console.log(JSON.stringify(results[i])); 
    } 
    }); 
}); 

HTML :

<input type="text" name="abc"> 


지금 내가 t를 원한다 모자 input string\charon every keyup은 일치하는 데이터가 없습니다 foo 또는 ID하지만 모든 키와 값.


나는 이것을 해결하는 방법을 찾을 수 없다.
내 측면에서 원하는 것이 있으면 알려주세요.


미리 감사드립니다.

+0

모든 키 이벤트와 함께 JSON을 가져올 필요가 없습니다. 대신 캐시하십시오. –

+0

그래도 내 문제를 해결하는 방법 .. –

+0

귀하의 문제는 매우 잘못 표현되었습니다. 당신의 질문은 실제로 객체 속성을 순회하는 것이고,이를 위해서는'Object.keys (data)'를 사용할 수 있습니다 (https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/ 참조). 객체/키). –

답변

0

개체에 대해 문자열 비교를 시도하고 있습니다.

이러한 개체의 각 속성을 내부적으로 반복해야합니다.

$.each(data, function(key, obj){ 
    var hasMatch = false; 
    // use any object property iteration approach to check each value 
    $.each(obj, function(key,val){ 
     if (val.search(new RegExp(InputVal,"i")) != -1) { 
      hasMatch = true; 
      return false; // break the loop, we have a match 
     } 
    }); 
    if(hasMatch){ 
     results.push(obj); 
    }    
}); 

필터와 같은 다른 배열 방법은()는 사용할 수 있지만이 또한 당신이 필요하지 않도록 사전에 데이터를로드해야 있습니다

현재 코드로 같은 형식으로 유지있다 매번 요청하십시오.

관련 문제