gpt4 book ai didi

javascript - 在 JavaScript 中解析一个 JSON 对象生成一个数组

转载 作者:行者123 更新时间:2023-12-01 16:17:30 25 4
gpt4 key购买 nike

我有以下 JSON,其中包含 filesfolders(保留字),用于指示哪些是文件和文件夹。

the_name_of_the_folder_itself:
"files": [array_of_files_]
"folders": [objects of folders inside this dir]

更容易看到 JSON 本身:

{
"configfiles": {
"folders": {
"dir1": {
"files": [
"data.dat",
"data2.dat"
]
},
"dir2": {
"folders": {
"subffolder": {
"files": [
[]
]
},
"subffolder_2": {
"files": [
"other.dat"
]
}
},
"files": [
[]
]
}
},
"files": [
[]
],
"LoadBase": "barfoo IGNORE THIS"
}
}

我如何从该 JSON 中获取所有路径和文件,这意味着要有一个包含以下元素的输出数组?

configfiles/
configfiles/dir1/
configfiles/dir1/data.dat
configfiles/dir1/data2.dat
configfiles/dir2/
configfiles/dir2/subffolder/
configfiles/dir2/subffolder_2/
configfiles/dir2/subffolder_2/other.dat

这是我目前的尝试:

function getPathAndFolder(folderPath)
{
foldersArray = Object.keys(folderPath)
foldersArray.forEach(function callback(folderName, index, array)
{
finalArray.push(folderName)
filesArray = folderPath[folderName].files
filesArray.forEach(function callback(fileName, index, array)
{
finalPath = folderName + "/" + fileName
});

// Call it again
//getPathAndFolder()

});
}

finalArray = []
getPathAndFolder(inputJSONobject)

有人可以帮我一下吗?

最佳答案

您可以使用 for...in 循环创建递归函数,该循环将数据作为第一个参数和在添加到结果时忽略的键数组,您可以在其中传递 files, 文件夹等...

const json = {"configfiles":{"folders":{"dir1":{"files":["data.dat","data2.dat"]},"dir2":{"folders":{"subffolder":{"files":[[]]},"subffolder_2":{"files":["other.dat"]}},"files":[[]]}},"files":[[]],"LoadBase":"barfoo IGNORE THIS"}}

function getPaths(data, ignored = [], prev = '') {
const result = []

for (let i in data) {
let path = prev;

if (!ignored.includes(i)) {
if (!Array.isArray(data)) {
path += (prev.length ? '/' : '') + i
result.push(path)
} else if (data[i].length) {
result.push(path + '/' + data[i])
}
}

if (typeof data[i] === 'object') {
result.push(...getPaths(data[i], ignored, path))
}
}

return result;
}

const ignored = ['files', 'folders', 'LoadBase']
const result = getPaths(json, ignored);
console.log(result)

关于javascript - 在 JavaScript 中解析一个 JSON 对象生成一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62280160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com