【问题标题】:How to store reference of all parents for each of the nested child?如何存储每个嵌套孩子的所有父母的参考?
【发布时间】:2017-08-26 08:56:29
【问题描述】:

小提琴:http://jsfiddle.net/p35cobgx/3/

下面是我的树结构:

Node
   Node-1
     Node-1-1......

现在我想为每个节点存储所有父节点的反向引用,如下所示:

节点

Node-1(应该只存储 Node 的反向引用,因为这是 Node-1 的最后一个父节点)

Node-1-1(应该存储所有父节点的反向引用,即 Node-1 和 节点,因为 Node 是 Node-1-1 的最后一个父节点)。

但我的代码的问题是我无法存储 Node-1-1 的节点的引用。

【问题讨论】:

  • 不清楚你在问什么。如果 Node-1-1 具有对 Node-1 的引用,而 Node-1 具有对 Node 的引用,那么只需查看 Node-1 的父节点,Node-1-1 就已经具有对 Node 的引用。为什么要再次存储它?
  • 这个例子可能对你有帮助(第二个演示):stackoverflow.com/questions/19691917/…
  • @MaximShoustin 感谢您的参考,但我看不到您在该答案中存储对所有父母的参考。您能给我一些见解吗?

标签: javascript angularjs


【解决方案1】:

使用此条件分配父级:

obj.parent = data.parent || null;

【讨论】:

    【解决方案2】:

    我不确定这是否正是您想要的答案,但这里是:

    您可以通过以下方式访问父节点:

    node.parentNode
    

    这是一个属性,保存父节点的引用。

    另外,有时访问父元素而不是节点更好,因为空格也可以是节点,所以你可以使用这个属性:

    node.parentElement
    

    【讨论】:

    • 节点是 js 对象而不是 dom 元素。您提供的代码适用于 dom 元素
    【解决方案3】:

    我将使用的算法是仅将直接父节点存储在节点中。

    所以如果 A 是 C 的 B 和 B 的父级

    这使它成为 A->B->C

    C.parent = B; B.parent = A;

    如果我想要 C 的所有父母,我会这样做

        var parentArray = getParent(C).slice();
        this.parents = [];
    
        //use parentArray as you like now!
    
    
        function getParent(obj){
    
        if(obj.parent){
        this.parents.push(obj.parent) //this.parents is an array
        getParent(obj.parent);
        }else{
        return this.parents;
        }
        }
    

    因此,如果您拨打电话 getParent(C);你得到它所有的父母B和A。 如果您拨打电话 getParent(B);你只得到A。 如果您拨打电话 getParent(A);你没有父母,因为它没有父母。

    希望有帮助!

    【讨论】:

    • 谢谢你的回答,但是在这段代码中,父母是从哪里来的:this.parents.push(obj.parent).Is it this.nodes.push(obj.parent)??跨度>
    • this.parents 只是一个可以直接使用的数组。它是一个对象数组。请注意,上面代码中的假设是您已经设置了对象之间的父层次结构,即您设置了 C.parent = B.parent 和 B.parent = A.parent。欢迎提出更多问题。
    • 我还只是对上面的代码进行了更多更改,让您更清楚自己可以做什么。
    猜你喜欢
    • 2021-07-04
    • 1970-01-01
    • 2011-12-19
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多