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

动态ID生成需求:以上一轮循环子ID作为下一轮父ID

搞定层级动态ID生成的方案来啦!

看你的需求,核心就是要生成一套层层递进的父子ID序列——初始从3生出3.1和3.2,之后每一轮都给上一轮所有最底层的节点各加一个.1的子ID,对吧?刚好我之前做过类似的需求,给你整理了清晰的实现思路和代码示例:

核心逻辑拆解

其实这个需求本质是跟踪每一轮的「待生成子节点的父ID」:

  1. 第一步先搞定初始的两个子节点3.1、3.2,把它们记下来作为下一轮的父ID
  2. 从第二轮开始,每一轮都遍历上一轮的所有父ID,给每个父ID拼上.1生成子ID,同时记录父子关系
  3. 把新生成的子ID替换成下一轮的父ID列表,循环往复就行

代码实现(两种常用语言)

JavaScript 版本

function generateDynamicIds(initialParent, initialChildCount, rounds) {
  const result = [];
  // 第一轮:生成初始父节点的子节点
  let currentParents = [];
  for (let i = 1; i <= initialChildCount; i++) {
    const id = `${initialParent}.${i}`;
    result.push({ ID: id, Parent: initialParent });
    currentParents.push(id);
  }

  // 后续轮次:为每个当前父节点生成子节点
  for (let round = 2; round <= rounds; round++) {
    const newParents = [];
    currentParents.forEach(parentId => {
      const childId = `${parentId}.1`;
      result.push({ ID: childId, Parent: parentId });
      newParents.push(childId);
    });
    currentParents = newParents;
  }

  return result;
}

// 示例:生成4轮(对应你要的到3.1.1.1.1的效果)
const ids = generateDynamicIds(3, 2, 4);
console.log(JSON.stringify(ids, null, 2));

运行后输出和你预期的完全一致:

[
  {"ID": "3.1", "Parent": "3"},
  {"ID": "3.2", "Parent": "3"},
  {"ID": "3.1.1", "Parent": "3.1"},
  {"ID": "3.2.1", "Parent": "3.2"},
  {"ID": "3.1.1.1", "Parent": "3.1.1"},
  {"ID": "3.2.1.1", "Parent": "3.2.1"},
  {"ID": "3.1.1.1.1", "Parent": "3.1.1.1"},
  {"ID": "3.2.1.1.1", "Parent": "3.2.1.1"}
]

Python 版本

如果你用Python的话,这个实现也很直观:

def generate_dynamic_ids(initial_parent, initial_child_count, rounds):
    result = []
    # 第一轮生成初始子节点
    current_parents = []
    for i in range(1, initial_child_count + 1):
        id_str = f"{initial_parent}.{i}"
        result.append({"ID": id_str, "Parent": str(initial_parent)})
        current_parents.append(id_str)
    
    # 后续轮次生成子节点
    for _ in range(1, rounds):
        new_parents = []
        for parent_id in current_parents:
            child_id = f"{parent_id}.1"
            result.append({"ID": child_id, "Parent": parent_id})
            new_parents.append(child_id)
        current_parents = new_parents
    
    return result

# 示例:生成4轮
ids = generate_dynamic_ids(3, 2, 4)
for item in ids:
    print(item)

输出结果:

{'ID': '3.1', 'Parent': '3'}
{'ID': '3.2', 'Parent': '3'}
{'ID': '3.1.1', 'Parent': '3.1'}
{'ID': '3.2.1', 'Parent': '3.2'}
{'ID': '3.1.1.1', 'Parent': '3.1.1'}
{'ID': '3.2.1.1', 'Parent': '3.2.1'}
{'ID': '3.1.1.1.1', 'Parent': '3.1.1.1'}
{'ID': '3.2.1.1.1', 'Parent': '3.2.1.1'}

小提示

  • initialChildCount参数可以调整初始父节点的子节点数量(这里设2就是生成3.1和3.2)
  • rounds参数控制生成的总轮数,比如你要到3.1.1.1.1就设4轮就行
  • 每一轮都会自动更新父节点列表,确保只给当前最底层的节点生成子ID,完全符合你的需求

内容的提问来源于stack exchange,提问作者スペースタイム

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:39:51