2013-05-24 3 views
5

이 내 JSONjquery를 사용하여 json 배열에서 값을 구분하는 방법.

{ 
    "data": [ 
    [ 
     "1", 
     "Skylar Melovia" 
    ], 
    [ 
     "4", 
     "Mathew Johnson" 
    ] 
    ] 
} 

this is my code jquery Code

for(i=0; i<= contacts.data.length; i++) { 
    $.each(contacts.data[i], function(index, objValue){ 
     alert("id "+objValue); 
    }); 
} 

난 내 objValue의 데이터를 가지고 있지만 내 코드가 우는 소리이다에서 난 idname가이 모양 모양의 배열에 별도로 저장할

var id=[]; 
var name = []; 
for(i=0; i<= contacts.data.length; i++){ 
    $.each(contacts.data[i], function(index, objValue) { 
     id.push(objValue[index]); // This will be the value "1" from above JSON 
     name.push(objValue[index]); // This will be the value "Skylar Melovia" from above JSON 
    }); 
} 

어떻게하면됩니까?

+0

그 네가 원하는대로 일 했니? 문제를 더 잘 정의하십시오. –

답변

3
$.each(contacts.data, function(index, objValue) 
{ 
    id.push(objValue[0]); // This will be the value "1" from above JSON 
    name.push(objValue[1]); // This will be the value "Skylar Melovia" from above JSON 

}); 

편집, 대체 사용 :

$.each(contacts.data, function() 
{ 
    id.push(this[0]); // This will be the value "1" from above JSON 
    name.push(this[1]); // This will be the value "Skylar Melovia" from above JSON 
}); 

가 $의 .each이 contacts.data 반복 것입니다 :

[ 
    //index 1 
    [ 
     "1", 
     "Skylar Melovia" 
    ], 
    //index=2 
    [ 
     "4", 
     "Mathew Johnson" 
    ] 

] 

당신이 서명 기능 (인덱스에 부여한 anomnymous 기능, Objvalue)은 index 인 각 요소에 적용되며 contact.data 배열의 인덱스이고 objValue 값입니다. index = 1이면 다음과 같이 표시됩니다.

objValue=[ 
      "1", 
      "Skylar Melovia" 
     ] 

그러면 objValue [0] 및 objValue [1]에 액세스 할 수 있습니다. (Dutchie432 주석과 대답에 응답)

EDIT) : jQuery를하지 않고 그것을 할 빠른 방법은, $의 .each 쓰기 및 읽기 좋네요 그러나 여기에서 당신은 JS 평범한 구식 사용

for(i=0; i<contacts.data.length; i++){ 
    ids.push(contacts.data[i][0]; 
    name.push(contacts.data[i][1]; 
} 
+0

글쎄, 거기있다. 같은 점을 만드는 3 개의 다른 대답. 이것은 내 대답 lazily for 루프에서'.length'를 사용하기 때문에 아마도 가장 좋은 대답 일 것입니다. 네가 더 매끄럽다. – Dutchie432

+0

매끄럽지 만 특히 jQuery가 필요하지 않은 경우 for 루프를 사용해야합니다.하지만 OP가 $ .each가 어떻게 작동하는지 알아야합니다. – TecHunter

+0

솔루션을 제공해 주셔서 감사 드리며 모든 문제를 설명합니다. 그것은 좋은 일 .. – addy

1

아마도 나는 완전히 이해하지 못했지만 데이터 항목을 반복하면서 포함 된 값을 반복한다고 생각합니다. 내 생각에 당신이 원하는 것은 데이터 항목을 순환하여 값 0과 1을 각각 가져 오는 것입니다.

또한, 나는 외부 for 루프를 제거 less than or equal to (<=)

for(i=0; i<contacts.data.length; i++){ 
    ids.push(contacts.data[i][0]; 
    name.push(contacts.data[i][1]; 
} 
0

반대로 당신이 당신의 루프에서 less than (<) 연산자를 원하는 생각합니다. $.each은 이미 data 배열을 반복합니다. data[i]은 배열이 아니므로 $.each은 반복 할 수 없습니다.

http://jsfiddle.net/ExplosionPIlls/4p5yh/

은 또한 있지만 둘, 대신 $.eachfor 루프를 사용할 수 있습니다.

관련 문제