繁体   English   中英

从javascript中的子对象属性访问父对象

[英]accessing the parent object from the child object property in javascript

我的问题 。 我有一个这样的对象:

t.mainobject = {
    prop1: "",
    prop2: "",
    id: "1",
    prop3: [
        child1: {
            id: "111"
        },
        child2: {
            id: "112"
        }
    ]
};

我只看到child1 / child2,而我不知道它的父对象。 我尝试使用下划线,但未找到任何可以为我提供父对象的方法。

在此先感谢您的任何建议/建议。

EDIT1:
我所有的子对象都是从多个对象创建的,因此最终变成了扁平对象。

喜欢:

t.mainobject = {
    prop1: "",
    prop2: "",
    id: "1",
    prop3: [
        child1: {
            id: "111"
        },
        child2: {
            id: "112"
        }
    ]
};


t.mainobject1 = {
    prop1: "",
    prop2: "",
    id: "2",
    prop3: [
        child1: {
            id: "211"
        },
        child2: {
            id: "212"
        }
    ]
};

t.mainobject3 = {
    prop1: "",
    prop2: "",
    id: "1",
    prop3: [
        child1: {
            id: "311"
        },
        child2: {
            id: "312"
        }
    ]
};

现在我得到了一个数组:

[{id:"111"},{id:"112"}, {id:"211"},{id:"212"}, {id:"311"},{id:"312"}]

现在如何使用id获得包含子对象的父对象。

编辑2:

我的解决方案:

var parent = _.filter(allParent, function(r){
            for(var i=0; i<r.posts.length; i++){
                if(r.posts[i].id === allChildPosts[index].id){
                    return r.id;
                }
            }
        });

它返回了父对象,现在我可以轻松访问任何属性。

这不可能直接实现,因为就JavaScript而言,child1可以是任意数量的对象的属性:因此,从总体上讲,“父对象”的概念实际上并没有任何意义。

更重要的是,如果没有对父对象的引用,它们将被垃圾回收,因此没有希望回到父对象上。

但是,如果可以列出一个对象的所有潜在父代,则可以全部搜索它们:

function findParent(child){
  for(var i=0; i < parents.length; i++){
    var mainobject = parents[i]; // a potential parent
    for(childName in mainobject.prop3){
      if(mainobject.prop3[childName].id === child.id){ // match found!
        return mainobject;
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM