簡體   English   中英

遍歷標准化數據的最佳方法是什么?

[英]What is the best way to traverse through normalized data?

我試圖遍歷文件夾結構的一些規范化數據,但是我的實現遇到了一些麻煩。

例如,我的數據如下所示:

dict: { 
    parent_folder: {files: [], folders: [folder1, folder2, folder3]},
    folder1: {files: [file1], folders: [folder4, folder 5]},
    folder2: {files: [file2], folders: []},
    folder3: {files: [], folders: [folder6]},
    folder4: {files: [file3, file4], folders: []},
    folder5: {files: [file5], folders: []},
    folder6: {files: [file6], folders: []}
}

基本上如下所示:

Root
    -Folder1/
        -file1
        -Folder4/
             -file3
             -file4
        -Folder5/
             -file5
    -Folder2/
        -file2
    -Folder3/
        -Folder6/
             -file6

現在我想基本遍歷所有內容以打印每個文件的路徑

Root/Folder1/file1
Root/Folder1/Folder4/file3
Root/Folder1/Folder4/file4
Root/Folder2/file2
Root/Folder3/Folder6/file6

我似乎想不出一種遍歷此歸一化數據的簡單方法,但我將不勝感激!

退后一步,考慮一個簡單的函數,該函數接受這些對象之一並返回文件數組。 那只是一個簡單的map() ,它添加了一些路徑前綴,例如:

obj.files.map(f => prefix+f)

因此,如果編寫針對特定對象執行此操作的函數,然后對幾乎所有需要的文件夾調用相同的函數。 您只需要在向下移動樹時更改前綴:

 let dict= { parent_folder: {files: [], folders: ['folder1', 'folder2', 'folder3']}, folder1: {files: ['file1'], folders: ['folder4', 'folder5']}, folder2: {files: ['file2'], folders: []}, folder3: {files: [], folders: ['folder6']}, folder4: {files: ['file3', 'file4'], folders: []}, folder5: {files: ['file5'], folders: []}, folder6: {files: ['file6'], folders: []} } function getFiles(obj, prefix="root/"){ let r = obj.files.map(f => prefix+f) // get this level's files obj.folders.forEach(folder =>{ // for the folders call the same thing r.push(...getFiles(dict[folder], prefix+folder+'/')) // alter the prefix as you go }) return r } console.log(getFiles(dict.parent_folder)) // give it the parent to start 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM