我有一个工具可以通过文件系统并发搜索某些文件。当该工具搜索文件系统时,它可能会发现它需要在最初未包含在搜索中的目录中进行搜索。
我应该做的是记住已经开始搜索的每个目录。
我想不出更好的方法来记住文件路径,除了将它们存储在像这样的散列中:
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
};
然后我快速查找一下是否需要搜索某个目录。这个解决方案让人感觉尴尬的是散列中的值几乎可以是任何东西——真、假、未定义。
这是记住遍历的文件路径的最佳方法吗?
顺便说一句,性能是
key in hash
同上
hash[key]
?
如果是这种情况,那么存储为值的数据就有一定的值(value):
当开始搜索目录时,我可以将值设为 false,然后当目录完成搜索时,我可以将值翻转为 true。那么这个值至少意味着某种东西。
最佳答案
使用 map
:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map
The Map object holds key-value pairs. Any value (both objects and primitive values) may be used as either a key or a value.
或设置
:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set
The Set object lets you store unique values of any type, whether primitive values or object references.
我会选择Set
,但在测试该值是否已存在于集合中时,我不知道两者之间的性能比较。
关于node.js - 使用 Node.js 记住遍历的 fs 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44750249/