2017-08-03 170 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可以幫你找到匹配至少一個過濾器和Array.prototype.some將確保你停止一旦第一個匹配的過濾器發現的任何文件:

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

我認爲你正在尋找下面的代碼:

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

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

+0

是的,在這種情況下找到比減少更好。 – Frilox

+0

謝謝@Jonasw,我現在明白了。 – Frilox

相關問題