2015-01-05 4 views
0

인 경우 JSON 파일에 여러 객체 배열이있는 객체가 있습니다. 개체의 값이 특정 숫자와 같은 경우 함수를 호출하고 싶습니다. 같으면 해당 값을 가진 객체가 선택된 div에 입력됩니다. 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?JSON - 객체 값이

예 :
나는 "프로파일"개체가 있고 개체 "카테고리"숫자 "1"와 같은지 비교하고 싶다. 그렇다면 해당 객체를 첫 번째 ".contentBox .viewed"에 입력하십시오. "category"객체가 숫자 "2"와 같은 경우 두 번째 ".contentBox .viewed"에 해당 객체를 입력합니다.

json으로 데이터

: 현재 JS의

{ 
    "profiles": [ 
     { "firstName" : "John", "lastName" : "Doe", "gender": "male", "category": 1 }, 
     { "firstName" : "Jane", "lastName" : "Austen", "gender": "female", "category": 1 }, 
     { "firstName" : "Alexander", "lastName" : "Beth", "gender": "male", "category": 1 }, 
     { "firstName" : "Sarah", "lastName" : "Kelly", "gender": "female", "category": 2 }, 
     { "firstName" : "Rachel", "lastName" : "Haiworth", "gender": "female", "category": 2 }, 
     { "firstName" : "Thomas", "lastName" : "Alfae", "gender": "male", "category": 2 }, 
     { "firstName" : "William", "lastName" : "Lee", "gender": "male", "category": 2 } 
    ] 
} 

샘플 :

xhr.onload = function() { 
    if (xhr.status === 200) { 
     responseObject = JSON.parse(xhr.responseText); 
     responseObject.profiles.sort(function(a, b) { 
      return SortAlphabetically(a.firstName, b.firstName);  
     }); 

     var newViewers = ''; 
     for (var i = 0; i < responseObject.profiles.length; i++) { 
      newViewers += '<span class="user">' + responseObject.profiles[i].firstName + ' '; 
      newViewers += responseObject.profiles[i].lastName + '</span>'; 
      newViewers += ' '; 
     } 

     //Update Page With New Content 
     var viewerSection = $('div.viewed'); 
     viewerSection.html(newViewers); 
     checkViewers(); 

    } 
}; 

xhr.open('GET', 'data.json', true); 
xhr.send(null); 

내가 "profiles.category.val() === 1의 라인을 따라 뭔가 "가 작동 할 경우 확실하지 않다 또는 더 나은 경로가있는 경우.

현재보기 및 완료

+1

JS의 기본 정렬 정렬 사전 순으로 정렬하지 않습니까? –

+0

당신의 삶을 편하게 할 수있는 Array # filter (google mdn 필터) –

+0

'if (responseObject.profiles [i] .category == 1)' – Barmar

답변

2

카테고리에 따라 테이블의 컬럼에 이름을로드하는 아주 기본적인 예제를 만들었습니다.

var json = { 
 
    "profiles": [ 
 
     { "firstName" : "John", "lastName" : "Doe", "gender": "male", "category": 1 }, 
 
     { "firstName" : "Jane", "lastName" : "Austen", "gender": "female", "category": 1 }, 
 
     { "firstName" : "Alexander", "lastName" : "Beth", "gender": "male", "category": 1 }, 
 
     { "firstName" : "Sarah", "lastName" : "Kelly", "gender": "female", "category": 2 }, 
 
     { "firstName" : "Rachel", "lastName" : "Haiworth", "gender": "female", "category": 2 }, 
 
     { "firstName" : "Thomas", "lastName" : "Alfae", "gender": "male", "category": 2 }, 
 
     { "firstName" : "William", "lastName" : "Lee", "gender": "male", "category": 2 } 
 
    ] 
 
} 
 
for (var i = 0; i < json.profiles.length; i++) { 
 
    var obj = json.profiles[i]; 
 
    if (obj.category == 1) { 
 
     $("#content").append("<tr><td>" + obj.firstName + " " + obj.lastName + "</td><td></td></tr>"); 
 
    } 
 
    else if (obj.category == 2) { 
 
     $("#content").append("<tr><td></td><td>" + obj.firstName + " " + obj.lastName + "</td></tr>"); 
 
    } 
 
}
table, tr, td, th{border: 1px solid black; border-collapse:collapse;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<table> 
 
    <thead> 
 
     <tr> 
 
      <th>Category 1</th> 
 
      <th>Category 2</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody id="content"> 
 
      
 
    </tbody> 
 
    <tbody> 
 

 
    </tbody> 
 
</table>

다음 이름과 성을 추출, 개체가 속한 범주 밖으로 정렬 부분입니다. 예를 들어 테이블의 열에 그냥 놓기 만하면 추출 된 데이터로 원하는 모든 작업을 수행 할 수 있습니다.

for (var i = 0; i < json.profiles.length; i++) { 
    var obj = json.profiles[i]; 
    if (obj.category == 1) { 
     $("#content").append("<tr><td>" + obj.firstName + " " + obj.lastName + "</td><td></td></tr>"); 
    } 
    else if (obj.category == 2) { 
     $("#content").append("<tr><td></td><td>" + obj.firstName + " " + obj.lastName + "</td></tr>"); 
    } 
} 

기본적으로 코드에 루프가 있습니다. 조건부 문을 추가하여 개체가 속한 범주를 확인하면됩니다.