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

如何在JavaScript中获取嵌套对象的下一个属性键?

实现嵌套对象中指定键的下一个同级键查找

我来帮你搞定这个需求!要找到嵌套对象里指定属性键的下一个同级键,核心思路是递归遍历整个对象结构,定位到目标键所在的父对象,然后在父对象的键列表里取它的下一个元素就行。

先准备测试数据

先把你给出的JSON结构转成可操作的JavaScript对象:

const testData = {
  'Test123': {
    'Another Test': {},
    'Test some more': {
      'Still testing?': { 'Yeah...': {} },
      'Never ending story': {}
    }
  }
};

递归实现的核心函数

下面这个函数可以完成你的需求,我会把逻辑拆解开解释:

function getNextSiblingKey(obj, targetKey) {
  // 获取当前对象的所有键,转为数组(ES2015+ 环境保证键的插入顺序)
  const keys = Object.keys(obj);

  for (let i = 0; i < keys.length; i++) {
    const currentKey = keys[i];

    // 找到目标键了,直接返回它的下一个同级键(没有就返回null)
    if (currentKey === targetKey) {
      return keys[i + 1] || null;
    }

    // 当前键对应的值是对象,递归深入子层级查找
    const value = obj[currentKey];
    if (typeof value === 'object' && value !== null) {
      const result = getNextSiblingKey(value, targetKey);
      // 递归找到结果就直接返回,不用继续遍历当前层级
      if (result !== null) {
        return result;
      }
    }
  }

  // 遍历完当前层级没找到目标键,返回null
  return null;
}

验证你的示例场景

用你给出的测试案例验证效果:

console.log(getNextSiblingKey(testData, 'Still testing?')); // 输出: "Yeah..."
console.log(getNextSiblingKey(testData, 'Yeah...')); // 输出: "Never ending story"
console.log(getNextSiblingKey(testData, 'Another Test')); // 输出: "Test some more"
console.log(getNextSiblingKey(testData, '不存在的键')); // 输出: null

几个需要注意的细节

  • 键的顺序依赖:这个实现基于ES2015+的特性——对象的自有属性会按插入顺序保存。如果你的运行环境是非常旧的JS引擎(比如IE11及更早),键的顺序可能不可靠,这种情况可以考虑用Map来存储键值对(Map严格保证插入顺序)。
  • 重复键的处理:如果目标键在多个层级存在,函数会返回第一个匹配到的键的下一个同级键。如果需要收集所有匹配的结果,可以修改函数返回数组。
  • 排除null干扰:函数里判断value !== null是因为typeof null也会返回object,避免把null当成对象递归遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 00:27:28