如何为每个嵌套孩子存储所有父母的参考?

时间:2017-08-26 08:56:29

标签: javascript angularjs

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

下面是我的树形结构:

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

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

  

节点

     

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

     

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

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

enter image description here

3 个答案:

答案 0 :(得分:1)

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

您可以使用以下方式访问父节点:

node.parentNode

这是一个属性,包含父节点的引用。

此外,访问父元素而不是节点有时会更好,因为空格也可以是节点,因此您可以使用此属性:

node.parentElement

答案 1 :(得分:1)

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

因此,如果A是C的母亲和C的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);你没有父母,因为它没有父母。

希望有所帮助!

答案 2 :(得分:1)

使用此条件分配父级:

obj.parent = data.parent || null;