获取json对象中父项id的列表

时间:2014-09-20 05:23:49

标签: jquery json recursion

我的嵌套json看起来像:

var obj ={ "Name": "Main", "Id": "1", "Parent": "0", "children": [{ "Name": "Main1", "Id": "2", "Parent": "1", "children": [ ...

obj是树状结构,如下所示:

enter image description here

如何解析obj以获取指定id的任何父级的id?

jquery函数,例如function getIdParentsOf('25') { }

输出示例:25到1的父母是{20, 18, 10, 1 }

1 个答案:

答案 0 :(得分:2)

声明只是具有特定属性的对象,包括相同类型的子节点数组。基本上是一个树形结构

您已更新了问题,现在树已分层。这意味着你需要递归地走树。 JSFiddle:http://jsfiddle.net/TrueBlueAussie/gdwjmqwh/6/

// If the required node is found, return true
// matching nodes added to the result parameter
var findParent = function (parentnode, id, result) {
    if (parentnode.Id == id){
        result.push(parentnode.Parent);
        return true;
    }
    if (parentnode.children) {
        for (var i = 0; i < parentnode.children.length; i++) {
            var node = parentnode.children[i];
            if (parentnode.Parent && findParent(node, id, result)) {
                result.push(parentnode.Parent);
                return true;
            }
        }
    }
    // no matches found - return false
    return false;
}

像这样打电话

var result = [];
findParent(obj, "2", result)
console.log(result);
// Displays an array of parent ids