2016-05-10 19 views
0

名前のリストをループし、一致する値をconsole.loggingしようとしています。 の配列の場合は間違っていますか?javascript - 値が 'in'の配列の場合

for (var i = 0; i < this.state.apiResponse.length ; i++) { 

     var selectedChars = this.state.chosenChars 
     var returnedChars = this.state.apiResponse[i].name 

     console.log(selectedChars) 
     console.log(returnedChars) 


     // I think i'm making a mistake with this if statement 
     if (returnedChars in selectedChars) { 
     console.log(this.state.apiResponse[i].name);    
     } 

selectedCharsアレイと値が返されました:

["Luke Skywalker", "Han Solo"] 

Luke Skywalker 
Han Solo 
Chewbacca 
+0

'in'演算子は、あなたが思うようにはしません。 'indexOf'を使います。 – zzzzBov

答えて

1

あなたはstring.indexOf(substring)を使用する必要があります。ストリングが見つからない場合

if (selectedChars.indexOf(returnedChars) !== -1) { 
    console.log(this.state.apiResponse[i].name);    
} 

string.indexOf(substring)は、文字列内のサブストリングのインデックス、または-1を返します。 「-1以外のもの」をチェックすると、returnedCharsselectedCharsにあることを確認できます。

+0

ああ、私は(selectedChars.indexOf(returnedChars))を使ってみました。私はそれをチェックしていなかった!== - 1、これを明確にしてくれてありがとう! – James

0

in演算子を使用しないでください。代わりにindexOfを使用します。

for (var i = 0; i < this.state.apiResponse.length ; i++) { 

    var selectedChars = this.state.chosenChars 
    var returnedChars = this.state.apiResponse[i].name 

    console.log(selectedChars) 
    console.log(returnedChars) 


    // I think i'm making a mistake with this if statement 
    if (selectedChars.indexOf(returnedChars)!==-1) { 
    console.log(this.state.apiResponse[i].name);    
    } 
0

うん、それはjavascriptのだ:)

あなたは配列にindexOf()メソッドを使用することができ、pythonのではありません。

if (selectedChars.indexOf(returnedChars) > -1) { 
    console.log(this.state.apiResponse[i].name);    
    } 

申し訳ありませんが、search()は文字列用です。

関連する問題