【发布时间】:2018-08-02 23:26:00
【问题描述】:
我正在尝试将代表我的文件系统的嵌套对象转换为代表每个文件夹和文件的文件路径的字符串数组。
输入:
let obj = {
'app': {
'body': {
'abs': {
'muscles.txt': 1
},
'foot.js': 1,
'hand.txt': 1,
'leg.txt': 1
},
'cat.txt': 1,
'dog.js': 1,
'writing': {
'pen.txt': 1,
'phone.txt': 1
}
}
};
输出:
[
'/app',
'/app/body',
'/app/body/abs/',
'/app/body/abs/muscles.txt',
'/app/body/foot.js',
'/app/body/hand.txt',
...
]
到目前为止我所拥有的(它不起作用):
function filePaths(obj, oldKey = '', store = []) {
for (let key in obj) {
if (typeof obj[key] === 'object') {
store.push('/' + key);
filePaths(obj[key], key, store);
} else {
store.push('/' + oldKey + '/' + key);
}
}
return store;
}
filePaths(obj);
【问题讨论】:
-
您的输出中的路径有时有斜杠 (
/app/body/abs/),有时没有(/app、/app/body)。您是否想要带有或不带有斜线的结果,或者是否有其他标准可以包含它? -
是的,抱歉,这是我的错误。我想要没有尾随斜杠。谢谢你的回答。
标签: javascript file object recursion nested