通过子节点查找父节点

Posted zdf-xue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过子节点查找父节点相关的知识,希望对你有一定的参考价值。

lz在用element-ui时候 用到Cascader 级联选择器多选的时候 是要进行通过子节点查找所有的父节点的需求;于是有了下面的代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>find family</title>
    <script type="text/javascript">
        var json = [
            id: 1,
            parentId: null,
            children: [
                id: 10,
                parentId: 1,
                children: [
                    id: 101,
                    parentId: 10
                ]
            , 
                id: 11,
                parentId: 1,
                children: [
                    id: 110,
                    parentId: 11
                ]
            ]
        ]
    </script>

    <script type="text/javascript">

        var parentNode = null;
        var node = null;

        function getNode(json, target) 
           for (var i = 0; i < json.length; i++) 
                if (node) 
                    break;
                
                var obj = json[i];
                if (!obj || !obj.id) 
                    continue;
                

                if (obj.id == target) 

                    node = obj;
                    if (obj.parentId) 
                        parentNode =  id: obj.parentId ;
                    
                    break;
                 else 

                    if (obj.children && obj.children.length != 0) 

                        getNode(obj.children, target)
                     else 
                        continue;
                    
                
            
            if (!node) 
                parentNode = null;
            
            return 
                parentNode: parentNode,
                node: node
            ;
        

        var query = 101;
        var result = [];
        var getResult = function (json, query) 
            node = null;
            parentNode = null;
            var obj = getNode(json, query);
            if (obj.parentNode) 
                getResult(json, obj.parentNode.id);
                result.push(obj.parentNode.id);
            
            return result;
        
        getResult(json, query);
        console.log(result);
    </script>
</head>

<body>
</body>

</html>

改某个网友的代码;之前的这位网友写的是有bug的;

以上是关于通过子节点查找父节点的主要内容,如果未能解决你的问题,请参考以下文章

SQL (根据子节点查询父节点信息)

JS根据子节点递归获取所有父节点的集合

combotree怎样去掉父节点的图标

mysql如何根据很多子节点查询出父节点,只要一条路径上的

根据XPath中子节点的double值查找父节点

查找父/子控件(元素节点)