node.js - 使用 Node.js 记住遍历的 fs 路径

标签 node.js hash hashmap hashtable memoization

我有一个工具可以通过文件系统并发搜索某些文件。当该工具搜索文件系统时,它可能会发现它需要在最初未包含在搜索中的目录中进行搜索。

我应该做的是记住已经开始搜索的每个目录。

我想不出更好的方法来记住文件路径,除了将它们存储在像这样的散列中:

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/

相关文章:

javascript - Electron macOS : Change icon of files

javascript - Socket.io 全局发送函数 - Node.js

android - 我如何将 HashMap 转换为数组?

java - 按值对 Java HashMap 键进行分组

java - 尝试为文本字段设置文本

node.js - 惯用的 Node 错误处理

javascript - 如何在使用JAVA加密的nodejs中解密

hadoop - 替代 hadoop 提供的默认 hashpartioner

ruby - 跨多个哈希取平均值

security - 公开的散列可以被认为是安全的多长时间?