2017-08-30 14 views
1

文字列sにリスト内のいずれかのトークンが含まれているかどうかをチェックしたいと考えていますL文字列にリストのトークンが含まれていることを確認してください。

これはJavascriptで組み込み関数がありますか?

function present(s, L) { 
    for (var i = 0; i < L.length; i++) 
    if (s.indexOf(L[i]) !== -1) 
     return true; 
    return false; 
} 

var L = ['abc', 'def', 'ghi']; 
var s = 'Yes, definitely.'; 
present(s, L); // true 
+1

array.filter –

+0

をすることはできます使用してみてくださいあなたは将来の参照のために例を提供する@GopalkrishnaNarayanPrabhu? – Basj

答えて

1

あなたはちょうどそれらのそれぞれの間|オペレータを貼り付けることにより、list内のすべての項目で正規表現を作成することができますか私のような何かを手動で行う必要があります。その後、試合をチェックするためにRegExp.prototype.test()を使用します。

function isPresent(string, list) { 
    return new RegExp(list.join('|')).test(string) 
} 
var list = ['abc', 'def', 'ghi']; 
var string = 'Yes, definitely.'; 
isPresent(string, list); // true 
+0

あなたはトークンのどれも特殊文字を含んでいないか、またはそれらをエスケープする必要があることを確かめる必要があります。 – Bergi

+0

@Bergiは本当です!良いキャッチ。 – bowheart

3

あなたはsome高階関数を使ってループを簡素化し、代わりにindexOfincludesを使用することができます。

L.some(token => s.includes(token)) 
+0

印象深い!この構文はすべてのブラウザで機能しますか?それは魔法のように見えます( '=>'がサポートされて以来、私は覚えていません)。 – Basj

+0

@basj http://caniuse.com/#feat=arrow-functions、 'some'と' includes'については、MDN – Bergi

+0

の互換表を参照してください。より広範なサポートのために、 'L.some(function(t){ return s.includes(t)}); '。 – Basj

関連する問題