2011-11-29 5 views
39

ID 및 이름과 같은 여러 속성이있는 JSON 객체가 있습니다. JavaScript 배열에 저장 한 다음 드롭 다운 목록을 기반으로 해당 ID를 기반으로 JavaScript 배열에서 객체를 검색하려고합니다.JavaScript의 속성 값을 기반으로 객체 배열에서 선택하십시오.

개체에 ID와 이름이 있다고 가정 할 때 배열 변수에서 개체를 선택하려면 어떻게해야합니까? 이미 jQuery를 갖기 때문에

var ObjectsList = data; 
var id = $("#DropDownList > option:selected").attr("value"); 
ObjectsList["id=" + id]; 
+0

: 당신이 다음 continue을 좋아하지 않는 경우에 당신은 이런 식으로 할 수 . – jfriend00

답변

57

하면 $.grep을 사용할 수

는 필터 함수를 만족하는 배열의 요소를 찾아 낸다. 원래 배열은 영향을받지 않습니다.

그래서 이런 식으로 뭔가 : 배열 matches에서 ObjectsList에서 일치하는 항목의 배열을 떠나

var matches = $.grep(ObjectsList, function(e) { return e.id == id }); 

. 위는 ObjectsList이 같은 구조를 가지고 있다고 가정

[ 
    { id: ... }, 
    { id: ... }, 
    ... 
] 

당신이 거기에 하나의 일치 또는 당신은 단지 다음 첫 번째를 원한다면 당신이 이런 식으로 할 수 있다는 것을 알고있는 경우 :이

for(var i = 0, m = null; i < ObjectsList.length; ++i) { 
    if(ObjectsList[i].id != wanted_id) 
     continue; 
    m = a[i]; 
    break; 
} 
// m is now either null or the one you want 

for 루프 방식에 많은 변형이 있으며 많은 사람들이 나를 손가락으로 흔들어 생각합니다. continue은 나쁜 단어입니다. 당신은 당신이 우리가 액세스하는 방법을 조언 할 수 있어야하기 위해 선택하려는 실제 JSON 데이터를 표시 할 필요가

for(var i = 0, m = null; i < ObjectsList.length; ++i) { 
    if(ObjectsList[i].id == wanted_id) { 
     m = ObjectsList[i]; 
     break; 
    } 
} 
+3

이것은 트릭이 필터와 일치하는 새 배열의 첫 번째 요소를 선택하기 위해 마지막에 [0]을 넣어야했습니다. – sergioadh

관련 문제