你可以通过递归的方式来实现这个需求。首先,我们需要定义一个递归函数,该函数将接收一个节点和一个空数组作为参数。在函数内部,我们将首先将该节点的值添加到数组中,然后检查是否存在父级节点。如果存在父级节点,则将父级节点传递给递归函数,继续处理。最后,我们将返回最终的数组。

以下是实现这个递归函数的示例代码:

function getHierarchyValues(node, result = []) {
  // 将当前节点的值添加到结果数组中
  result.push(node.value);
  
  // 检查是否存在父级节点
  if (node.parent) {
    // 递归调用函数,将父级节点传递给它
    getHierarchyValues(node.parent, result);
  }
  
  return result;
}

然后,我们需要创建与给定的对象结构相对应的节点对象。我们可以使用以下代码来创建节点对象:

const a = { value: 1 };
const b = {
  value: 1000,
  children: {
    value: 600,
    children: {
      value: 1
    }
  }
};

// 创建一个父级节点
const parent = { value: 100 };
// 添加 a 作为 parent 的子节点
parent.children = a;
// 添加 parent 作为 a 的父级节点
a.parent = parent;

// 添加 b 作为 a 的子节点
a.children = b;
// 添加 a 作为 b 的父级节点
b.parent = a;

现在,我们可以调用 getHierarchyValues 函数来获取层级值的结果了:

const result = getHierarchyValues(a);
console.log(result);  // 输出 [ 1000, 600, 1 ]

这样,我们就可以得到 [ 1000, 600, 1 ] 这个包含 a 的父级的值按层级排列的结果了。

JavaScript 递归获取对象层级值 -  示例代码

原文地址: https://www.cveoy.top/t/topic/fsTe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录