2013-03-19 36 views
74

Tôi có loại mảng dưới đây. Tôi muốn lặp lại mảng này trong JavaScript. Sao có thể như thế được?Làm thế nào để lặp mảng JSON trong JavaScript?

var dictionary = { 
    "data":[ 
     {"id":"0","name":"ABC"}, 
     {"id":"1","name":"DEF"} 
    ], 
    "images": [ 
     {"id":"0","name":"PQR"}, 
     {"id":"1","name":"xyz"} 
    ] 
}; 

Trả lời

116

Bạn có thể làm điều đó bằng mã bên dưới. Đầu tiên bạn lấy mảng dữ liệu bằng cách sử dụng dictionary.data và gán nó cho biến dữ liệu. Sau đó bạn có thể lặp lại nó bằng cách sử dụng vòng lặp bình thường. Mỗi hàng sẽ là một đối tượng hàng trong mảng.

var data = dictionary.data; 

for(var i in data) 
{ 
    var id = data[i].id; 
    var name = data[i].name; 
} 

Bạn có thể làm theo cách tiếp cận tương tự để lặp mảng hình ảnh.

+1

Bạn nên đặt dấu ngoặc nhọn của mình trên cùng một dòng trong JS (Tôi thường ủng hộ dấu ngoặc nhọn trên cùng một dòng, nhưng JavaScript là lạ: http: // robertnyman.com/2008/10/16/beware-of-javascript-semicolon-insertion/) – Barnaby

+0

i có cấu trúc mảng giống nhau nhưng tại sao nó trả về undefined –

+0

cho ... in không phù hợp với mảng. – mplungjan

1
for(var foo in dictionary){ 
    for(var bar in dictionary[foo]){ 
    for(var baz in dictionary[foo][bar]){ 
     // do something... 
     console.log(foo + ' > ' + baz + ' > ' + dictionary[foo][bar][baz]); 
    } 
    } 
} 

FYI: Arrays <-> Objects cú pháp liên changable trong Javascript.

2
for(index in dictionary) { 
for(var index in dictionary[]){ 
    // do something 
    } 
} 
22

Có cách này quá (mới để ECMAScript5):

dictionary.data.forEach(function(item){ 
    console.log(item.name + ' ' + item.id); 
}); 

Cùng cách tiếp cận để hình ảnh

6

Something như thế:

var dictionary = {"data":[{"id":"0","name":"ABC"},{"id":"1", "name":"DEF"}], "images": [{"id":"0","name":"PQR"},{"id":"1","name":"xyz"}]}; 

for (item in dictionary) { 
    for (subItem in dictionary[item]) { 
    console.log(dictionary[item][subItem].id); 
    console.log(dictionary[item][subItem].name); 
    } 
} 
+0

cho ... ở không phù hợp với mảng. - vì vậy đối với từ điển, nhưng đối với (var j = 0; j mplungjan

3

Sử dụng ký hiệu dấu chấm và/hoặc khung ký hiệu để truy cập các thuộc tính đối tượng và for loops để lặp mảng:

var d, i; 

for (i = 0; i < dictionary.data.length; i++) { 
    d = dictionary.data[i]; 
    alert(d.id + ' ' + d.name); 
} 

Bạn cũng có thể lặp lại các mảng bằng cách sử dụng các vòng for..in; tuy nhiên, các thuộc tính được thêm vào Array.prototype có thể hiển thị thông qua và bạn có thể không nhất thiết phải lấy các phần tử mảng theo đúng thứ tự của chúng hoặc thậm chí theo bất kỳ thứ tự nhất quán nào.

0
var dictionary = {"data":[{"id":"0","name":"ABC"}, {"id":"1","name":"DEF"}], 
       "images": [ {"id":"0","name":"PQR"},"id":"1","name":"xyz"}]}; 


for (var key in dictionary){ 
     var getKey = dictionary[key]; 
     getKey.forEach(function(item){ 
     console.log(item.name + ' ' + item.id); 
    }); 
} 
0

Sử dụng cho và foreach vòng lặp

var dictionary = { 
     data: [{ id: "0", name: "ABC" }, { id: "1", name: "DEF" }], 
     images: [{ id: "0", name: "PQR" }, { id: "1", name: "xyz" }] 
    }; 
    dictionary.data.forEach(item => { 
     console.log(item.id + " " + item.name); 
    }); 

    for (var i = 0; i < dictionary.data.length; i++) { 
     console.log(dictionary.data[i].id + " " + dictionary.data[i].name); 
    } 
Các vấn đề liên quan