一道题
输入数据:
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