2013-01-08 69 views
12

thể trùng lặp:
I have a nested data structure/JSON, how can I access a specific value?Objects Truy cập trong JSON Array (JavaScript)

Tôi có một dịch vụ mà trả về đối tượng lồng nhau trong một JSON Array. Làm thế nào tôi có thể lặp qua các đối tượng và in dữ liệu mong muốn?

Đây là kết quả của tôi:

[ 
{ 
    "item1": { 
     "sourceUuid": "5599ffac-4b99-47c7-9370-a25e7e465429", 
     "targetUuid": "5599ffac-4b99-47c7-9370-a25e7effffff" 
    } 
}, 
{ 
    "item2": { 
     "sourceUuid": "bf63fe50-8b2b-488d-b565-009fcaebdb45", 
     "targetUuid": "-1" 
    } 
}, 
{ 
    "item3": { 
     "sourceUuid": "0005fd96-f654-4781-8602-09fedc0cdd35", 
     "targetUuid": "0005fd96-f654-4781-8602-09fedc0cdd35" 
    } 
} 
] 

Đây là những gì tôi muốn in cho từng hạng mục (item1, ITEM2, ITEM3, ...):

Item Name: item1 
Source: 5599ffac-4b99-47c7-9370-a25e7e465429 
Target: 5599ffac-4b99-47c7-9370-a25e7effffff 

Cho đến nay tôi đã cố gắng:

for (var i = 0, length = data.length; i < length; i++) { 
for (obj in data[i]) { 
    console.log(obj); 

} 
} 

Chỉ trả về "mục1", "mục2" vv Nhưng tôi không biết cách truy cập nguồnUuid, v.v ... từ đó

Trả lời

31

Bạn có thể lặp mảng với một for loop và các thuộc tính đối tượng với for-in loops.

for (var i=0; i<result.length; i++) 
    for (var name in result[i]) { 
     console.log("Item name: "+name); 
     console.log("Source: "+result[i][name].sourceUuid); 
     console.log("Target: "+result[i][name].targetUuid); 
    } 
+0

Cảm ơn bạn thân :) – edward

5

Sử dụng một vòng lặp

for(var i = 0; i < obj.length; ++i){ 
    //do something with obj[i] 
    for(var ind in obj[i]) { 
     console.log(ind); 
     for(var vals in obj[i][ind]){ 
      console.log(vals, obj[i][ind][vals]); 
     } 
    } 
} 

Demo: http://jsfiddle.net/maniator/pngmL/

+0

tôi muốn sử dụng nó sau khi ngọc. Hoặc angularjs. – mcbjam

Các vấn đề liên quan