簡體   English   中英

如何使用 javascript 遍歷這個 json 數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM