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

JavaScript如何遍历含任意层级combinedPorts键的嵌套数组

任意层级combinedPorts嵌套通用遍历方案

核心思路用深度优先递归遍历即可,不需要提前预知嵌套深度,每次处理节点时只要检测到存在合法的combinedPorts子数组,就对子数组重复执行相同的处理逻辑,天然适配N层嵌套场景。


1. 扁平遍历(适合收集所有节点、逐节点渲染场景)

这个实现会按深度优先的顺序遍历到每一个节点,支持传入自定义回调处理单个节点的逻辑,同时返回当前节点的层级数,方便做缩进、层级样式区分:

/**
 * 递归遍历所有端口节点
 * @param {Array} portList 待遍历的端口数组
 * @param {Function} callback 单个节点的处理回调,入参为(当前节点, 当前层级)
 * @param {number} level 起始层级,默认从0开始
 */
function traversePorts(portList, callback, level = 0) {
  if (!Array.isArray(portList)) return;
  portList.forEach(node => {
    // 执行自定义节点处理逻辑
    callback(node, level);
    // 检测到存在合法子节点时,递归进入下一层遍历,层级+1
    if (Array.isArray(node.combinedPorts)?.length) {
      traversePorts(node.combinedPorts, callback, level + 1);
    }
  })
}

调用示例

const originData = [/* 你的原始嵌套数组 */];
const allNodes = [];

traversePorts(originData, (node, level) => {
  // 示例:收集所有节点到扁平数组,附带层级信息
  allNodes.push({
    name: node.name,
    type: node.type,
    level
  });
  // 如果是直接渲染列表,也可以在这里根据level做缩进拼接、组件渲染等操作
});

2. 树形结构生成(适合树形组件、嵌套展示场景)

如果你需要保留原有的嵌套结构,格式化后给树形组件、级联选择器这类需要层级关系的组件用,可以用递归map的实现:

/**
 * 递归生成树形结构数据
 * @param {Array} portList 待处理的端口数组
 * @param {number} level 起始层级
 * @returns {Array} 格式化后的树形数组
 */
function generatePortTree(portList, level = 0) {
  if (!Array.isArray(portList)) return [];
  return portList.map(node => {
    const formattedNode = {
      label: node.name,
      value: node.name,
      type: node.type,
      level
    };
    // 存在子节点时递归处理,挂载到children字段
    if (Array.isArray(node.combinedPorts)?.length) {
      formattedNode.children = generatePortTree(node.combinedPorts, level + 1);
    }
    return formattedNode;
  })
}

调用示例

// 得到的treeData是完整保留嵌套关系的格式化数组,可直接传入绝大多数树形组件使用
const treeData = generatePortTree(originData);

实现说明

  • 所有逻辑都加了数组类型校验,不会因为某一层缺失combinedPorts字段、字段值为空/非数组抛出报错
  • 没有硬编码嵌套层级,只要数据结构符合combinedPorts存储子节点的规则,任意深度都能正常处理
  • 内置的层级参数可根据业务需求自由扩展,比如做折叠展开控制、层级权限校验、缩进样式配置等

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:18:20