Javascript中最有效的“isRelated”函数

时间:2015-03-11 02:55:37

标签: javascript

我有一个嵌套的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));
}

有更有效的方法吗?我不是在寻找一种更有效的方法来编写相同的东西,而是一种更有效的遍历树的方法,看看两个对象是否相关。

0 个答案:

没有答案