如何使用javascript或jQuery访问JSON数组中的嵌套数组?

hl0ma9xz  于 2023-04-05  发布在  jQuery
关注(0)|答案(2)|浏览(168)

我有一个嵌套数组,看起来像下面的示例代码。
我需要访问JSON数组中的嵌套数组。
但问题是我总是得到undefined

var json = {
    "status": "OK",
    "tickets": {
        "open_tickets": [{
            "id": "2",
            "assets": [{
                "id": 2446,
                "age": 4,
    
            }]
        }, {
            "id": "3",
            "assets": [{
                "id": 244564646,
                "age": 28,
            }]

        }]
    }
};

for(i=0;i<json.tickets.open_tickets.length;i++){

var id = json.tickets.open_tickets[i].id;
var age = json.tickets.open_tickets[i].assets.age;

$('.holder').append('<p>'+id+' '+age+'</p>')
 

}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="holder">


</div>

age变量总是undefined,我不知道为什么会发生这种情况。
我做错了什么?

htrmnn0y

htrmnn0y1#

您可以使用for Each循环来简化此操作,该循环遍历json.tickets.open_tickets并使用[0]访问资产数组。

let holder = document.querySelector(".holder");
var json = {
  "status": "OK",
  "tickets": {
    "open_tickets": [{
      "id": "2",
      "assets": [{
        "id": 2446,
        "age": 4,

      }]
    }, {
      "id": "3",
      "assets": [{
        "id": 244564646,
        "age": 28,
      }]

    }]
  }
};

json.tickets.open_tickets.forEach((e) => {
  holder.innerHTML += '<p>' + e.id + ' ' + e.assets[0].age + '</p>'
});
<div class="holder">


</div>
p1tboqfb

p1tboqfb2#

试试这个:

for (var i = 0; i < json.tickets.open_tickets.length; i++) {
    var ticket = json.tickets.open_tickets[i];
    var id = ticket.id;
    var assets = ticket.assets;
    for (var j = 0; j < assets.length; j++) {
        var age = assets[j].age;
        $('.holder').append('<p>' + id + ' ' + age + '</p>');
    }
}

相关问题