【发布时间】:2018-01-28 12:41:06
【问题描述】:
我正在递归地遍历大型目录树(从 100,000 到 1,000,000 个对象),并且需要将每个文件或目录添加到深度嵌套的对象中。
假设我有类似的文件路径
/path/to/file1
/path/to/file2
...
/pathX/file1000000
我需要基于它们创建以下嵌套对象:
{
"name": "/",
"value": 300,
"children": [
{
"name": "/pathX",
"value": 100,
"children": [
{
"name": "/pathX/file1000000",
"value": 100
}
},
{
"name": "/path",
"value": 200,
"children": [
{
"name": "/path/to",
"value": 200,
"children": [
{
"name": "/path/to/file1",
"value": 100
},
{
"name": "/path/to/file2",
"value": 100
}
]
}
]
}
]
}
value 是文件大小或嵌套文件大小的总和。为简单起见,假设file1、file2 和fileN 等于100。
我能够为一个文件构建嵌套对象,但在为具有不同路径的许多文件构建它时遇到问题:
const path = require('path')
const fs = require('fs')
let file = '/opt/bin/file1'
let size
fs.stat(file, (err, stats) => { size = stats.size })
let paths = file.split(path.sep)
let nameChild = file
let objChild = { "name" : nameChild, "value" : size }
let nameParent
let objParent
for (var i in paths) {
if (i==0) continue
nameParent = path.dirname(nameChild)
objParent = { "name" : nameParent, "value" : size, "children" : [ objChild ] }
nameChild = nameParent
objChild = objParent
}
console.log(JSON.stringify(objParent))
【问题讨论】:
标签: javascript node.js