通过子节点查找父节点

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的;

原文地址:https://www.cnblogs.com/zdf-xue/p/11503600.html

时间: 2024-10-11 11:55:10

通过子节点查找父节点的相关文章

JQuery的父、子、兄弟节点查找,节点的子节点循环

JQuery的父.子.兄弟节点查找,节点的子节点循环: http://www.cnblogs.com/mingforyou/p/4410054.html

JS获取子节点、父节点和兄弟节点的方法实例总结

JS获取子节点.父节点和兄弟节点的方法实例总结 原生js 参考网址 Jquery 参考网址 原文地址:https://www.cnblogs.com/renxiuxing/p/10180558.html

Oracle树查询(查询所有子节点,父节点等等)_转载

Oracle树查询(查询所有子节点,父节点等等) 转载 2016年01月14日 10:11:55 Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了.依托于该语法,我们可以将一个表形结构的中以树的顺序列出来.在下面列述了Oracle中树型查询的常用查询方式以及经常使用的与树查询相关的Oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等. 以我做过的一个项目中的表为例,表结构如下: Sql代码 1

SQL SERVER 2000 遍历父子关系数据的表(二叉树)获得所有子节点 所有父节点及节点层数函数

---SQL SERVER 2000 遍历父子关系數據表(二叉树)获得所有子节点 所有父节点及节点层数函数---Geovin Du 涂聚文--建立測試環境Create Table GeovinDu([ID] Int, fatherID Int, [Name] Varchar(10))Insert A Select 1, 0, '中国'Union All Select 2, 1, '广东'Union All Select 3, 1, '北京'Union All Select 4, 2, '深圳特区

php中递归无限分类之-通过子栏目查找父栏目

<?php header("content-type:text/html;charset=utf8"); /*通过子栏目查找父栏目,范围小到范围大*/ $area = array( array('cat_id'=>1,'province'=>'福建省','parent_id'=>0), array('cat_id'=>2,'province'=>'龙岩市','parent_id'=>1), array('cat_id'=>3,'provi

ORACLE 树形遍历查询根节点、父节点、子节点

1.准备演示数据 创建表结构: -- Create table createtable Z_ORG(  cid         NUMBER,  cname       VARCHAR2(32),  parent_id   NUMBER,  create_time DATE,  org_level   NUMBER) tablespace POWERDESK pctfree10 initrans1 maxtrans255; -- Add comments to the table comment

s查找父节点

查找所有的父节点,包括本身,不包括就<>id with tbs as(select * from TB_HomeBase where ID=223 union all select a.* from TB_HomeBase a inner join tbs b on a.id=b.ParentID) select top 1 ID FROM ( select *,ROW_NUMBER() over (order by FirstID)as tt from tbs) AS A ORDER BY

ztree 获取子节点所有父节点的name的拼接

//获取子节点,所有父节点的name的拼接字符串function getFilePath(treeObj){if(treeObj==null)return "";var filename = treeObj.name;var pNode = treeObj.getParentNode();if(pNode!=null){filename = getFilePath(pNode) +">"+ filename;}return filename;} 原文地址:ht

【JS学习笔记】DOM基础-字节点,父节点

一.DOM基础 (1)什么是DOM?DOM,即document,是用来操作页面上的元素,比如操作div获取,修改样式等.是JS的组成部分,还是一套规范. (2)浏览器的支持情况 现在主流的浏览器有3种,分别是IE,Chrome,Firefox. IE:在IE6-8版本中,对DOM的支持差不多是百分之十几差不多了,但是到了IE9就有了质的飞跃. Chrome:介于两者之间,在60%左右,对DOM支持的不是那么的好也不是那么的差. Firefox:对于DOM的支持几乎可以用99%来形容. 二.DOM