• 系统存储目录路径的格式化(JS)


    一道题

    输入数据:

    var pathList = [
      '/a/b',
      '/a/2/c',
      '/d',
    ];

    格式化数据(输出):

    {
      "a": {
        "2": {
          "c": {}
        },
        "b": {}
      },
      "d": {}
    }

    格式化函数的实现示例:

    /**
     * 格式化路径的函数
     * @param {string[]} pathList - 路径列表
     * @return {Object} 
     */
    function pathFormat(pathList) {
      // 格式化数据
      const answer = {};
      /**
       * 递归处理格式化过程
       * @param {string[]} list - 目录字符串列表
       * @param {Object} level - 路径信息对象
       * @return {undefined}
       */
      const rec = (list, level) => {
        // 终止条件
        if (list.length === 0) return;
        // 当前目录的名称(从最外层开始依次处理)
        const key = list.shift();
        // 如果当前目录的下级信息对象还不存在,则进行初始化
        if (level[key] === undefined) {
          level[key] = {};
        }
        // 处理下一级
        rec(list, level[key]);
      };
    
      // 迭代处理路径列表中的每一项
      for (const path of pathList) {
        // 目录字符串片段
        const frags = path.split('/').filter(Boolean);
        rec(frags, answer);
      }
    
      return answer;
    }
    
    console.log(JSON.stringify(pathFormat(pathList), null, 2));

    End

  • 相关阅读:
    Prometheus监控k8s集合
    docker集合
    开源堡垒机jumpserver
    ELK日志分析平台
    安全名称解释
    CPU上下文切换
    平均负载
    234. 回文链表
    125. 验证回文串
    122. 买卖股票的最佳时机II
  • 原文地址:https://www.cnblogs.com/fanqshun/p/16305652.html
Copyright © 2020-2023  润新知