2017-06-25 67 views
1

我有一個工具可以通過文件系統對某些文件進行併發搜索。當該工具通過fs進行搜索時,可能會發現它需要在最初未包含在搜索中的目錄中進行搜索。用Node.js記錄遍歷的fs路徑

我應該做的是記住每個已經開始搜索的目錄。

我想不出更好的方式來memoize的只是將它們存儲在一個哈希像這樣的文件路徑:

interface IMemoizationMap { 
    [key: string]: boolean 
} 

,這樣可能看起來像:

const hash = { 
    '/Users/you/projects/x': true, 
    '/Users/you/projects/x/lib': true, 
    '/Users/you/projects/x/lib': true, 
    ... 
    ... 
    '/Users/you/some-stuff/z': true 
}; 

然後我做快速查找,看看我是否需要搜索某個目錄。這個解決方案令人感到尷尬的是,哈希中的值幾乎可以是任何東西 - true,false,undefined。

這是記憶穿越的文件路徑的最佳方式嗎?

順便說一句,是

key in hash 

相同的性能如

hash[key] 

如果是這樣的話,那麼會有一些值得保存的值數據:當一個目錄開始被搜查我能值false

,然後在目錄中完成搜索,我可以翻轉值爲true。那麼這個值至少意味着東西

回答

2

圍棋與Map

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map

Map對象保存鍵 - 值對。任何值(對象和 原始值)都可以用作鍵或值。

或者Set

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set

設定的對象,您可以存儲任何類型的唯一值,無論 原始值或對象引用。

我會選擇Set,但我不知道之間的性能比較的兩個測試時,如果該值的集合已經存在。

+0

耶設置似乎是一個好主意,謝謝 –