2017-06-25 70 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

耶设置似乎是一个好主意,谢谢 –