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

文件夹扁平化路径命名与提取指定Item字段数组的技术问询

一、扁平化嵌套文件夹并生成路径式名称

要实现文件夹扁平化,同时将文件夹名称替换为从根到当前文件夹的路径格式,可通过递归遍历处理嵌套结构,记录每个文件夹的父路径,最终生成扁平化的文件夹列表。

以下是JavaScript实现代码:

function flattenFolders(rootFolder) {
  const result = [];
  
  // 递归遍历函数:处理当前文件夹,传入父路径前缀
  function traverse(folder, parentPath = '') {
    // 生成当前文件夹的路径名称
    const currentPath = parentPath ? `${parentPath}/${folder.name}` : folder.name;
    // 复制文件夹属性,清空嵌套文件夹,替换名称为路径
    const flattenedFolder = {
      ...folder,
      name: currentPath,
      folders: []
    };
    result.push(flattenedFolder);
    
    // 递归处理子文件夹
    if (folder.folders?.length) {
      folder.folders.forEach(subFolder => traverse(subFolder, currentPath));
    }
  }
  
  // 遍历根目录下的子文件夹(根目录name为null,直接处理子级)
  rootFolder.folders.forEach(folder => traverse(folder));
  
  return result;
}

// 调用示例
const originalData = /* 你的原始JSON数据 */;
const flattenedFolders = flattenFolders(originalData);
console.log(flattenedFolders);

执行后,文件夹的name会变为Testfolder/Subfolder、Testfolder/Subfolder/Interesting这类路径格式。

二、提取所有Item的指定属性

要提取所有层级(包括根目录)中item的id、folderId、text属性,同样通过递归遍历所有文件夹,收集符合要求的对象。

JavaScript实现代码:

function extractItems(rootFolder) {
  const result = [];
  
  // 递归遍历函数:处理当前文件夹的items及子文件夹
  function traverse(folder) {
    // 收集当前文件夹的items
    if (folder.items?.length) {
      folder.items.forEach(item => {
        result.push({
          id: item.id,
          folderId: item.folderId,
          text: item.text
        });
      });
    }
    
    // 递归处理子文件夹
    if (folder.folders?.length) {
      folder.folders.forEach(subFolder => traverse(subFolder));
    }
  }
  
  // 先收集根目录的items
  if (rootFolder.items?.length) {
    rootFolder.items.forEach(item => {
      result.push({
        id: item.id,
        folderId: item.folderId,
        text: item.text
      });
    });
  }
  
  // 遍历所有子文件夹
  traverse(rootFolder);
  
  return result;
}

// 调用示例
const originalData = /* 你的原始JSON数据 */;
const extractedItems = extractItems(originalData);
console.log(extractedItems);

执行后会得到目标格式的数组,每个元素仅包含指定的三个属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:31:17