2012-03-06 1 views
2

이것은 멍청한 질문 일지 모르지만 키 값 쌍을 반복하지 않고 json 객체를 선택하는 방법이 있는지 궁금합니다. 나는 e4x와 비슷한 일을 해왔지만, js에 대해 구문 론적으로 어떻게할지는 모르겠다. 예를키 값 쌍을 기준으로 json 객체를 선택하십시오.

var data = { "objects":[ 
       {"foo":"x","bar":"a"}, 
       {"foo":"y","bar":"b"} 
       ]} 

그래서 그 대신 for 루프의 경우, 어떤 방법으로 선언하는

var someObject = data.objects[where objects.foo == x] 
당신은 w/O를 수동 데이터에 대하여 반복하지만, 일부 코드가 반복 어쨌든 반대한다고 할 수있다
+0

하지 JSON있어, 그 문자 표기법을 객체입니다. –

+0

틀렸어. JSON은 Object Literal 표기법의 하위 집합이며 실제로 값 쌍의 식별자가 문자열로만 필요합니다. – FlavorScape

답변

3

(오히려 큰 물체에는 번개 속도가 기대되지 않는다).

그것에 대해 라이브러리있다 : jsonpath

+0

어. 나는 도서관에 따라 싫어한다. 아니 순수한 방법, 응? 내가 루핑하고있는 것 같아. – FlavorScape

+0

그런 다음 직접 작성하십시오. 특별한 것은 없습니다. 아, 당신은 여기에서'findBy'를 가져갈 수 있습니다 : http://travian.kirilloid.ru/js/array.js – kirilloid

+0

jsonQ! https://github.com/s-yadav/jsonQ/ – FlavorScape

0

이 질문 jsonQ 전에 이년 전에 질문을 받았다. jsonQ를 사용하면 형제를 찾기위한 코드를 작성할 수 있으며 루프 내에서 많은 루프를 작성하지 않고도 트리를 트래버스 할 수 있습니다. 질문은 네이티브 JS에서 그것을 찾는 방법을 원했지만, 제 2 살짜리 질문은 지금 조금 순진하다고 생각합니다. 나는 정말로 jsonQ와 같은 라이브러리를 찾고 있었지만 추한 루프를 작성하는 것을 피했다 (비록 내가 직접 할 수 있었지만).

0

질문은 오래되었지만이 대답은 누군가를 도울 수 있습니다.

이 목록에서 항목을 선택하려면, 당신은 자바 스크립트 필터를 기능을 사용할 수 있습니다

var data = { "objects":[ 
        {"foo":"x","bar":"a"}, 
        {"foo":"y","bar":"b"} 
       ]} 

var someobject = filterObject('x'); 

function filterObject(fooValue) { 
    return data.objects.filter(function(item) { 
     return item.foo == fooValue; 
    } 
}