2011-06-14 4 views
1

json 객체 배열이 있습니다. 배열을 검색하고 각 객체에 대해 '예'값을 갖는 모든 키의 쉼표로 구분 된 목록 인 '서비스'목록을 만듭니다. 서비스 목록이있는 json 객체 목록이 jquery의 각각을 사용하여 html로 표시됩니다.json jquery 필터 자바 스크립트 배열

큰 json 파일이므로 가능한 한 효율적으로 처리하고 싶습니다.

이미 개체의 속성은 jQuery의를 통해 액세스되는 한

각 (즉, obj.name) 은 - 그래서 나는 jQuery의 필터를 사용하여 각 개체에 대해 나열된 서비스를 필터링 한 다음 키를 표시 할 수 있어야한다고 생각합니다 값이 yes 인 경우

하지만 더 효율적인 옵션은 아마도 새 javascript 배열을 만들고 예 값으로 서비스에 가입 한 다음 그 변수를 html에 이 추가되도록 추가하는 것입니다.

어느 것이 더 빠를 지 모르겠지만 지금까지는 매우 성공적이었습니다 ... 그래서 조언과 예제가 매우 도움이 될 것입니다.

다음은 JSON 배열이 보이는 무엇과 같은 :

[ 
{"name":"name1", 
    "service1":"y", 
    "service2":"y", 
    "service3":"n", 
}, 

{"name":"name2", 
    "service1":"n", 
    "service2":"y", 
    "service3":"n", 
}, 
]; 

답변

2

첫째는, 쉼표를 후행 삭제합니다. 인터넷 익스플로러는 정말로 혼란 스럽습니다. 어쨌든, "각 값에 대해"라고 말할 때 배열을 "검색"하고 싶지 않다고 가정합니다. 당신은 배열을 반복하고 더 유용한리스트로 파싱하고 싶다. 내가 제안하는 첫 번째 방법은 원하는 배열을 원하는대로 전달하는 것입니다. 그러나 옵션이 아닌 경우 찾고자하는 것이 다소 효율적이어야합니다 (jsFiddle example) :

var json = [ 
    {"name":"name1", "service1":"y", "service2":"y", "service3":"n"}, 
    {"name":"name2", "service1":"n", "service2":"y", "service3":"n"} 
]; 
var parsed = {}; 

for (var i = 0, iLen = json.length; i < iLen; i++) { 
    // Assuming all we need are the name and a list 
    var name; 
    var list = []; 

    for (var key in json[i]) { 
    var value = json[i][key]; 

    // We need to hold on to the name or any services with value "y"   
    if (key === "name") { 
     name = value; 
    } else if (value === "y") { 
     list.push(key); 
    } 
    } 

    // Add them to the parsed array however you'd like 
    // I'm assuming you want to just list them in plain text 
    parsed[name] = list.join(", "); 
} 

// List them on the web page 
for (var key in parsed) { 
    document.write(key + ": " + parsed[key] + "<br>"); 
} 

그런 식으로 방문자가 사용할 수있는 서비스의 방문자에게 화면을 표시하고 필요한 경우 계속 사용할 수 있도록 배열을 유지합니다.

+0

완벽 - U 감사합니다! 예, 반복을 의미하고 검색하는 것과 반대되는 구문을 사용했습니다 ... 감사합니다. – sharpiemarker1