我的问题。我有一个像这样的对象:
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;
}
}
});
它返回父对象,现在我可以轻松访问任何属性。
答案 0 :(得分:3)
这不可能直接实现,因为就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;
}
}
}
}