You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript/Node.js如何获取对象属性的层级深度

获取嵌套对象属性的层级深度

问题说明

给定嵌套对象:

let obj = { a: "a", b: { c: "c", d: { e: "e" } } }

需要获取指定属性的层级深度,比如属性e的访问路径是obj.b.d.e,深度可按两种逻辑定义:4(包含根对象obj)或3(仅统计属性层级),两种都合理,取决于具体需求。

实现方案

递归遍历法

通过递归遍历对象所有属性,找到目标属性时返回当前层级:

function getPropertyDepth(obj, targetProp, currentDepth = 1) {
  if (!obj || typeof obj !== 'object') return 0;
  
  if (obj.hasOwnProperty(targetProp)) {
    return currentDepth;
  }

  for (const key of Object.keys(obj)) {
    const depth = getPropertyDepth(obj[key], targetProp, currentDepth + 1);
    if (depth > 0) return depth;
  }

  return 0;
}

// 测试示例
let obj = { a: "a", b: { c: "c", d: { e: "e" } } };
console.log(getPropertyDepth(obj, 'e')); // 输出4(包含根对象层级)
// 若要得到仅属性层级的深度(3),修改返回值为 currentDepth - 1 即可

路径拆分法

如果已知属性的完整访问路径,直接拆分路径计算长度:

function getDepthFromPath(path) {
  const segments = path.split('.').filter(seg => seg);
  return segments.length;
}

console.log(getDepthFromPath('obj.b.d.e')); // 输出4
console.log(getDepthFromPath('b.d.e')); // 输出3

注意事项

  • 若对象存在同名属性,方法会返回第一个找到的属性的层级深度;
  • 目标属性不存在时,返回0表示未找到;
  • 需提前明确层级的计数逻辑:是否包含根对象。

内容的提问来源于stack exchange,提问作者Rahabib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:35:20