我有一个嵌套的javascript对象(树),看起来像这样:
{
name: 'something',
value: 46,
children: [{
name: 'child',
value: 5
}, ...],
parent: {
name: 'parent',
value: 90
}
}
我希望有一个函数,我可以传入两个对象,看看它们是否与这个嵌套树对象相关(父或子)。
例如:
isRelated(something, parent) => true
是否有任何类型的算法可以执行此类查找?如果我能进一步澄清我的问题,请告诉我。非常感谢任何帮助!!!
更新:这就是我所拥有的:
function isChild(thing, relative) {
if (thing === relative) {
return true;
}
if (!thing.parent) {
return false;
}
return isChild(thing.parent, relative);
}
function isParent (thing, relative) {
var i;
if (thing === relative) {
return true;
}
if (!thing.children) {
return false;
}
for (i=0; i < thing.children.length; i++) {
if (isParent(thing.children[i], relative)) {
return true;
}
}
return false;
}
function isRelated(thing, relative) {
return (isChild(thing, relative) || isParent(thing, relative));
}
有更有效的方法吗?我不是在寻找一种更有效的方法来编写相同的东西,而是一种更有效的遍历树的方法,看看两个对象是否相关。