使用 Node.js 记忆遍历的 fs 路径

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
};

然后我快速查找是否需要搜索某个目录。这个解决方案让人感到尴尬的是,散列中的值几乎可以是任何东西——真、假、未定义。

这是记住遍历文件路径的最佳方式吗?

顺便说一句,是

的表现
key in hash

相同
hash[key]

?

如果是这样的话,那么存储的数据就会有一些价值:

当开始搜索目录时,我可以将值设置为 false,然后当目录完成搜索时,我可以将值翻转为 true。那么这个值至少意味着 something.

选择 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.

Set:

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,但我不知道在测试该值是否已存在于集合中时两者之间的性能比较。