使用Jquery从Json对象中获取父节点

6

我正在尝试通过子级节点在JSON对象中获取父节点。客户端传递给我的JSON是多级目录层次结构,层次结构如下:

Root
   -
   -Folder-1
           -folder1(a)
           -folder1(b)
   -folder-2
   -folder-3
           -folder3(a)

我希望的是,当我输入folder3(a)的ID时,应该给我返回folder-3的ID和名称。
这里有一个包含实际JSON对象的fiddle链接:http://jsfiddle.net/jftrg9ko/
2个回答

4

无论如何,您都必须搜索树,因此只需记住父级并在找到正确的子级时返回即可。

我稍微调整了一下:http://jsfiddle.net/jftrg9ko/1/

function getParent(tree, childNode)
{
    var i, res;
    if (!tree || !tree.folder) {
        return null;
    }
    if( Object.prototype.toString.call(tree.folder) === '[object Array]' ) {
        for (i in tree.folder) {
            if (tree.folder[i].id === childNode) {
                return tree;
            }
            res = getParent(tree.folder[i], childNode);
            if (res) {
                return res;
            }
        }
        return null;
    } else {
        if (tree.folder.id === childNode) {
            return tree;
        }
        return getParent(tree.folder, childNode);
    }
}

这正是我所寻找的,非常感谢.. :) - AddyProg

0

获取所有出现的情况

var pars,k,v,chk;
    pars = [];
    $.each(json,function(k,v){
        chk = k;
        $.each(v,function(k,v)
            if(k === node){
                pars.push(chk);
            }
        })
    })

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