8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

将硬编码路径数组转换为分组的子路径数据结构

A. D'Alfonso 2月前

18 0

输入:const data = ['app/index.ts', 'app/folder1/File1.tsx', 'app/folder1/File2.tsx', 'app/data/Data1.ts', 'app/data/Data2.ts', 'app/style.ts']预期输出分组路径:const

输入:

const data = [
  'app/index.ts',
  'app/folder1/File1.tsx',
  'app/folder1/File2.tsx',
  'app/data/Data1.ts',
  'app/data/Data2.ts',
  'app/style.ts'
]

预期输出分组路径:

const output = {
  "app": {
    files: ['index.ts', 'style.ts'],
    folder1: {
      files: ["File1.tsx", "File2.tsx"],
    },
    data: {
      files: ["Data.ts", "Data2.ts"],
    }
  }
}

我编写的函数输出错误:

const data = [
  'app/index.ts',
  'app/folder1/File1.tsx',
  'app/folder1/File2.tsx',
  'app/data/Data1.ts',
  'app/data/Data2.ts',
  'app/style.ts'
];

function convertData(data) {
  const output = {};

  data.forEach(path => {
    const pathSegments = path.split('/');
    const [root, ...rest] = pathSegments;

    let currentLevel = output;

    rest.forEach((segment, index) => {
      if (!currentLevel[segment]) {
        currentLevel[segment] = index === rest.length - 1 ? [] : {};
      }
      currentLevel = currentLevel[segment];
    });

    if (Array.isArray(currentLevel)) {
      currentLevel.push(pathSegments[pathSegments.length - 1]);
    } else {
      currentLevel.files = currentLevel.files || [];
      currentLevel.files.push(pathSegments[pathSegments.length - 1]);
    }
  });

  return output;
}

const out = convertData(data);
console.log(out);
帖子版权声明 1、本帖标题:将硬编码路径数组转换为分组的子路径数据结构
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由A. D'Alfonso在本站《javascript》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: