2017-06-25 8 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 
}; 

私は特定のディレクトリを検索する必要があるかどうかを確認するクイックルックアップ。この解決策について不愉快に感じるのは、ハッシュの値が何かになる可能性があるということです。真、偽、未定義です。

これは、横断ファイルパスをメモする最も良い方法ですか?同様

さておき、

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オブジェクトが プリミティブ値またはオブジェクト参照かどうか、あなたはどのようなタイプのユニークな値を格納することができます。

私はSetを選択しますが、値が既にコレクションに存在するかどうかをテストするとき、私は両方のパフォーマンスの比較に気づきません。

+0

ええとセットは良いアイデアのようです、ありがとう –

関連する問題