[英]How to loop through this json array using javascript
我嘗試循環此 json 但它不起作用。我想循環瀏覽商店但它不起作用
json:
{
"type": "shops",
"shops": {
"1": {
"id": "1",
"name": "abcd",
"open_time": "9AM",
"closed_time": "9PM"
},
"2": {
"id": "1",
"name": "efgh",
"open_time": "9AM",
"closed_time": "9PM"
}
}
}
劇本
$.getJSON( "simple.json", function( json ) {
console.log( "JSON Data: " + (json) );
for(var i = 0; i < json.shops.length; i++){
console.log(json[i].shops.name);
}
});
這不會給我任何結果
json.shops
不是數組,而是一個對象。 您可以使用for..in
循環或$.each
使用 $.each
$.getJSON( "simple.json", function( json ) {
console.log( "JSON Data: " + (json) );
$.each(json.shops, function(key, shop){
//key will be "1", "2"...n
console.log(shop.name, shop.id);
});
});
使用 for..in
for(var shop in json.shops){
//shop will be "1", "2"...n
if (json.shops.hasOwnProperty(shop))
console.log(json.shops[shop].name);
}
如評論所示,商店是一個對象,而不是一個數組。 您可以使用以下命令遍歷 javascript 對象的所有屬性:
$.getJSON( "simple.json", function( json ) {
console.log( "JSON Data: " + (json) );
for(var key in json.shops){
if (!json.shops.hasOwnProperty(key)) continue;
console.log(json.shops[key]);
}
});
json.shops.length
未定義,因為shops
是一個對象而不是數組,並且(在這種情況下)沒有“長度”屬性。 但是每個 JavaScript 對象都可以有屬性,並且這些屬性名稱可以作為列表檢索,然后您可以對其進行迭代:
for(var i = 0; i < Object.keys(json.shops).length; i++){
console.log(json.shops[Object.keys(json.shops)][i].name);
}
或者,也可以將對象的鍵作為數組獲取,並使用數組內置的forEach
函數:
Object.keys(json.shops).forEach(function(element, arrayIndex, array) {
console.log(array[element].name);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.