2016-08-02 6 views
2

に私は検索string.includesを使用して()のJavascript

var theString = "clovers are the best"; 
 
var theArray = ["lovers", "loved", "clove", "love", "clovers"]; 
 
for (i = 0; i < theArray.length; i += 1) { 
 
    if (theString.includes(theArray[i])) { 
 
    console.log(theArray[i]); 
 
    } 
 
}
以下のように文字列がstring.includes()メソッドを使用して文字列の配列の内側に存在するかどうかを検索しようとしています

出力には、予想される「クローバー」に加えて、「愛好者」、「クローブ」、「愛」が含まれています。文字列全体のみを検索するように検索を強制するにはどうすればよいですか?

+0

'String.prototype.includes'の代わりに' === 'を使用してください – zerkms

+1

' theArray [i] .includes(theString) 'と書いていますか? –

+1

私は 'theArray.includes(theString)'をループなしにしたいと思います。 – nnnnnn

答えて

2

配列の各要素をテストして、要素が文字列内に存在するかどうかを確認しています。特定の文字列がメンバであるかどうかを調べるだけで、問題の説明に近い配列をテストできます。

var theString = "clovers"; 
 
    var theArray = ["lovers", "loved", "clove", "love", "clovers"]; 
 
    var idx = theArray.findIndex(e => e === theString); 
 
    console.log(idx); 
 
    // finding a string done two ways 
 
    idx = theArray.indexOf(theString); 
 
    console.log(idx);

IDXが-1でない場合、文字列は、彼らが「クローバー」の一部であるため、配列

+0

これは 'indexOf'とは何とか違うのですか? –

+1

@torazaburo彼らは似たようなことをする。 indexOfは検索語を引数として取ります。 findIndexは関数を取ります。関数が直接比較 – Tibrogargan

+0

@Tibrogarganであるため、このインスタンスにindexOfが適切な場合があります。これを答えに追加する必要があります。 – Pavlo

-1

にそれがエキストラを返すだ存在です。私の推奨は、文字列の個々の単語を分割することです:

var input = prompt("enter string").split(" "); 
 
unallowed=",.()[]{}[email protected]#$%^&*~`|\\<>?/\"':;"; //list of not allowed chars 
 
for(i=0; i<input.length; i++) 
 
{ 
 
    for(j=0;j<unallowed.length;j++) 
 
    { 
 
     input[i]=input[i].split(unallowed[j]); 
 
     if(typeof(input[i])=="object") 
 
      input[i]=input[i].join(""); 
 
    } 
 
    
 
} 
 
var theArray = ["lovers", "loved", "clove", "love", "clovers"]; 
 
for (i = 0; i < theArray.length; i += 1) { 
 
    for(j=0; j<input.length; j++) 
 
     if (input[j].toLowerCase()==theArray[i]) { 
 
     console.log(theArray[i]); 
 
    } 
 
}
編集:私のコードでいくつかのデリープを修正。

+0

テスト対象の実際のセンテンスがハードコードされていない場合や、句読点が含まれている場合はどうなりますか?例えば、私はクローバーが好きではありませんが、オークの木やチューリップが好きです。 " – nnnnnn

+0

句読点は少し複雑です。単に削除する必要があります。 – enoua5

関連する問題