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

基于JS的动态树算法实现:按输入动态字段生成层级拼接路径

JS 动态树路径生成实现方案

核心实现代码

// 初始数据源可根据需求自行扩展
const sourceData = {
  sport: ['s_1', 's_2', 's_3'],
  date: ['d_1', 'd_2'],
  category: ['c_1']
}

/**
 * 生成多级拼接路径数组
 * @param {Object} source 数据源对象
 * @param {Array} fields 按顺序传入的层级字段数组
 * @returns {Array} 最终生成的路径数组
 */
function generatePathList(source, fields) {
  const result = []
  // 存储上一层级生成的所有路径
  let prevLevelPaths = []

  for (const field of fields) {
    const currentFieldValues = source[field]
    const currentLevelPaths = []

    if (prevLevelPaths.length === 0) {
      // 第一层级直接存入值
      currentFieldValues.forEach(val => currentLevelPaths.push(val))
    } else {
      // 后续层级和上一层路径拼接生成新路径
      prevLevelPaths.forEach(path => {
        currentFieldValues.forEach(val => {
          currentLevelPaths.push(`${path}|${val}`)
        })
      })
    }

    // 将当前层级所有路径加入最终结果
    result.push(...currentLevelPaths)
    // 更新上一层路径为当前层级路径,供下一轮循环使用
    prevLevelPaths = currentLevelPaths
  }

  return result
}

使用示例

// 示例1:传入两级字段
console.log(generatePathList(sourceData, ['sport', 'date']))
// 输出:['s_1','s_1|d_1','s_1|d_2','s_2','s_2|d_1','s_2|d_2','s_3','s_3|d_1','s_3|d_2']

// 示例2:传入三级字段
console.log(generatePathList(sourceData, ['sport', 'date', 'category']))
// 输出和需求给出的三级路径结果完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:15:01