2012-12-07 8 views
1

타사 사이트의 데이터를 가져 오는 사이트에서 작업하고 있습니다. 내 PHP는 데이터를 가져 와서 정말 멋진 JSON 객체로 응답한다. 그런 다음 $ .each를 사용하여 개체를 반복하고 위대한 데이터를 정렬합니다. 문제는 주요 속성을 가져 오는 방법을 모른다는 것입니다.javascript 객체의 main 속성을 얻으려면 어떻게해야합니까?

예 JSON 응답 :

{ 
    "1234": { 
     "all_sales": {"11/12/2012":"1211.33","11/13/2012":"2012.45"}, 
     "sales_total":"323.78", 
     "store_number":"1234", 
    }, 
    "5678": { 
     "all_sales": {"11/12/2012":"1211.33","11/13/2012":"2012.45"}, 
     "sales_total":"323.78", 
     "store_number":"5678", 
    }, 

} 

1234 및 5678는 저장 번호입니다. 내가 원하는 것은 store_number 속성이 필요없고 그냥 무엇인지 알고 있다는 것입니다.

for ($data as $store_number => $store_data){ 
    //do whatever 
} 

임 모든 종류의 이유를 위해이 일을하지만, 주로 단순히 지금의 경우 최고 10처럼 data.1234 전화를 걸거나위한 판매의 배열을 구축 할 수 있습니다 : PHP에서이 같은 일이 될 것이다 store_number 속성을 사용하면이 작업을 수행 할 수 있지만 추가 데이터는 필요하지 않습니다.

답변

1

여기에 작업에 적합한 도구입니다. 나는 jQuery를 좋아하지만 Jav-hammer를 JavaScript가 덮혀있을 때 채찍질하지는 않는다. 만약 내가 제대로 이해하고

var myObj = { 
    "1234": { 
     "all_sales": {"11/12/2012":"1211.33","11/13/2012":"2012.45"}, 
     "sales_total":"323.78", 
     "store_number":"1234", 
    }, 
    "5678": { 
     "all_sales": {"11/12/2012":"1211.33","11/13/2012":"2012.45"}, 
     "sales_total":"323.78", 
     "store_number":"5678", 
    }, 

} 

for (var x in myObj) { 
    alert('property:' + x); 
    alert('property.sales_total:' + myObj[x].sales_total); 
} 
+0

또한'if (myObj.hasOwnProperty (x)) {}'를 사용할 수도 있습니다 :) – Ian

+0

객체 리터럴의 경우? 내 지식이 필요하지 않습니다. –

+0

그 밖의 무엇에 비교 되니? – Ian

3

나는 당신이 $.each 콜백 함수의 첫 번째 인수를 사용하려는 생각 : 루프에서

x의
var a = { "1234": { ... }, "5678": { ... } }; 

$.each(a, function(main, val) { 
    console.log(main); // prints "1234" and "5678" 
}); 
+0

제 의견으로는'$ .each'를 사용하는 것이 무거울 것입니다. Javascript는 네이티브'for' 루프에서 사용할 수있는'in' 연산자를 제공합니다. for (var key in object) {}' –

+1

그들은 물음표에있는 객체를 반복 할 때 이미'$ .each '를 사용하고 있다고 말했고, 이것이 내 대답에 사용 된 이유입니다. 그들이 이미 그것을 사용하고 있지 않다면 동의 할 것입니다. 단지 for와 in을 사용하는 것이 더 쉬울 것입니다. – Xymostech

+0

작성자가 답변을하면 JQ 응답이 3 이상이되는 반면 0을 갖는 것보다 덜 괴롭 힙니다. JS가 실제로 더 쉬울 때 JQ 대 JS 앞에서 좀 바보가되고 있습니다. 아니 신 포도 @ Xymostech 또는 JQ에서. –

0
for (var key in object) { 
    console.log(key); 
} 
1

, 당신은 배열을 원하는 값 '1234', '5678'등 :

다른 생각에
myArray=$.map(myJSON,function(value,key){return key;}); 

[편집]이 가까이 될 일을 당신이 후 위치 :

myArray=$.map(myJSON,function(value,key){ 
// do whatever 
}); 

그리고 @Ian로

이 코멘트에서 말했다, 단일 루프에서 그룹에 모든 처리를 할 수 있습니다 (중 $ .each 또는 내 예제와 같이 $ .MAP).

+0

나는 이것 역시 확실히 좋아한다. OP가 어떻게 이러한 루프를 처리하는지 혼란 스럽지만, 모든 논리를 하나의 루프에 결합하는 것이 의미가있다. OP). PHP를 사용하여'for' 루프 예제를 키를 반복하는 것만으로 (저장하지 않고) 사용하기 때문에 이렇게 말합니다. – Ian

+0

비록 그지도가 혼란 스럽지만 객체를 정렬 할 수 없기 때문에 나는 그들의 판매 합계를 기반으로 배열을 만들고 그 배열을 다른 주문으로 정렬 할 수 있습니다. 예를 들어 판매 합계로 DSC를 말하십시오. 그런 다음 정렬 된 배열을 호출 할 수 있으며 해당 위치의 상점 번호를 반환하므로 해당 저장소를 호출하고 모든 데이터를 가져올 수 있습니다 ... 복잡하지만이를 잘 수행하는 방법이 될 수 있습니다 .. –

+0

@DennisSmolek 그것은 완벽한 감각을 가지고 있습니다. 이제 당신의 이유를 설명해 드리겠습니다 :-). 그리고 첫 번째 발췌 문장은 여러분이 찾고있는 것을 정확히 한 행에 담았습니다! – Christophe

관련 문제