在JSON文件中查找最后一个子元素

时间:2016-08-08 07:12:31

标签: jquery json

我有一个结构如下的JSON文件:

"FAMILY": {
        "1": {
            "ANNA": {
                "name": "ANNA X",
                "alive": true,
                "children": {
                    "MAX": {
                        "name": "MAX X",
                        "alive": false,
                        "children": {}
                    },
                    "TOM": {
                        "name": "TOM X",
                        "children": {
                            "TOM JR": {
                            "name": "MAX X",
                            "alive": true,
                            "children": {...}
                            }
                        }
                    }
                }
            }
        },
        "2":...
}

我想找到活着的最后一个孩子(儿童数据)。我们不知道家庭成员的数量,所以我不能为每个人做一个循环。 我怎样才能做到这一点?循环所有安娜的家人,找到最后一个孩子。

感谢。

2 个答案:

答案 0 :(得分:0)

您需要递归来迭代每个节点并计算水平深度。您还需要一个变量来保存最深层次的节点。递归结束后,返回变量。寻找递归和冒泡排序。

答案 1 :(得分:0)

我希望这应该是有帮助的,在这里我认为你的对象在obj变量

var last_member =null;
function getLastChildren(obj)
{
    for(i in obj)
    {
        if(typeof obj[i].children !== "undefined")
        {
            getLastChildren(obj[i].children);
        }
        else if(typeof obj[i].alive !== "undefined" && obj[i].alive)
        {
            last_member=obj[i];
        }
    }
}
getLastChildren(obj.FAMILY);
console.log(last_member);

获取最深层次成员的另一个解决方案

var last_member =null;
var deep_level=0;
function getLastChildren(obj, current_level)
{
    for(i in obj)
    {
        if(typeof obj[i].children !== "undefined")
        {
            getLastChildren(obj[i].children, current_level+1);
        }
        else if(typeof obj[i].alive !== "undefined" && obj[i].alive current_level>=deep_level)
        {
            last_member=obj[i];
            deep_level=current_level;
        }
    }
}
getLastChildren(obj.FAMILY,1);
console.log(last_member);

由于

相关问题