[英]Memoizing traversed fs paths with Node.js
我有一個工具正在通過文件系統並發搜索某些文件。 在工具搜索fs時,它可能會發現它需要在搜索中最初未包含的目錄中進行搜索。
我應該做的是記住每個已經開始搜索的目錄。
除了將它們存儲在這樣的哈希中之外,我想不出一種更好的方式來記住文件路徑:
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。 那么價值至少意味着什么 。
搭配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對象使您可以存儲任何類型的唯一值,無論是原始值還是對象引用。
我會選擇Set
,但是當測試值是否已經存在於集合中時,我不知道兩者之間的性能比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.