2017-08-03 4 views
0

さまざまな検索パラメータを指定して複数のファイルタイプを検索できる検索機能を作成しようとしています。文字列に配列内の部分文字列が含まれているかどうかを確認する[NODEJS]

たとえば、アプリケーションに次のフィルタ配列['.ini'、 '.exe'、 'dsak_']を渡して、そのファイルと比較してファイル名にそのファイル名が含まれているかどうかを確認したい文字列は

現在、私は次のコード

for(var i = 0; i < filter.length; i++){ 
 
    if(file.includes(filter[i])) results.push(file); 
 
}

を使用しています。しかし、私はこれを達成するためのより良い方法があったかどうかを確認するために期待していましたか?

+0

正規表現は簡単です。 – alexmac

+0

array.join( "|")その後正規表現.matchを実行しますが、パフォーマンスは変わりません。 https://stackoverflow.com/questions/45372093/how-to-check-if-any-word-inside-a-text-is-in-array/45372164#45372164 –

+0

パフォーマンスの違いはテストされていますか?正規表現を使うと、大きなサイクルでわずかな利点があると私は思います。 – Kontra

答えて

1

Array.prototype.filter

var matchingFiles = files.filter(file => filters.some(filter => file.includes(filter))); 
1

私は次のコードを探していると思う:あなたは少なくとも1つのフィルタに一致するすべてのファイルを見つけるのを助けることができるとArray.prototype.someは、最初に一致するフィルタが見つかったら、あなたが停止することを保証します

files.filter((file) => 
    // apply filters on files to check if it matches 
    filters.some((filter) => file.includes(filter))  
) 
+1

um filters.find/some ????? –

+0

はい、この場合、findはreduceよりも優れています。 – Frilox

+0

ありがとう@ジョナス、私は今それを得る。 – Frilox

関連する問題