在JSON中获取子元素/使用jQuery/JS遍历嵌套的JSON?

3
我想知道是否可以实现这个功能,如果可以的话,我该如何循环遍历它:
[
{
    "name": "Hello",
    "views": 10,
    "subMovie": [
        {
        "name": "World",
        "views": 10,
        "subMovie": [
            {
            "name": "Test 1",
            "views": 10,
            "subMovie": [
                {
                "name": "Test 2",
                "views": 10,
                "subMovie": [
                    {
                        "name": "Test 3",
                        "views": 10,
                        "subMovie": [],
                        "id": 5
                    }
                ],
                "id": 4
                }
            ],
            "id": 3
            }
        ],
        "id": 2
        }
    ],
    "id": 1
}
]

如何获取最后一个子元素(subMovie)?

我想访问它们并将它们全部打印出来,但是如何在jQuery/JavaScript中循环遍历这个子元素中的子元素呢?

2个回答

4
以下代码将从movies数组的最后一个元素开始。然后,它将通过选择它访问的每个电影的最后一个数组元素来进入subMovie树,直到没有subMovie为止。
var movies = [
{
    "name": "Hello",
    "views": 10,
    "subMovie": [
        ...
    ],
    "id": 1
}
];

var m = movies[movies.length - 1];

while(m.subMovie.length >= 1) {
    console.log(m.name);
    m = m.subMovie[m.subMovie.length - 1];   
}

console.log(m); //Object {name: "Test 3", views: 10, subMovie: Array[0], id: 5}

1
这不是一个单一的JSON对象,而是包含JSON对象的数组。如果你想了解更多关于JSON的知识,请查看this article
考虑到你的数组名称为data,如下所示:
var data = [
{
    "name": "Hello",
    "views": 10,
    "subMovie": [
        {....
}
]

使用以下代码:
data[0].subMovie[0].subMovie[0].subMovie[0].subMovie[0];

这将返回:
Object {name: "Test 3", views: 10, subMovie: Array[0], id: 5}

希望有所帮助。

我知道了。我已经试过并且它有效。但是如果我不知道子电影中有多少个子电影呢?比如说可能有从0到100个(甚至更多),但我不知道具体数量。 - Owiee1331
好的,我只是想帮忙,看一下其他答案,它可以工作。 - Zakaria Acharki
是的,谢谢你的帮助。我一开始没有解释清楚 :) - Owiee1331

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接