2016-05-10 7 views
0

Ich versuche, eine Liste von Namen und console.logging die Werte, die übereinstimmen. Gehe ich falsch mit (wenn Wert in Array)?Javascript - für wenn Wert ist 'in' Array

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);    
     } 

Die selectedChars Array und Rückgabewerte:

["Luke Skywalker", "Han Solo"] 

Luke Skywalker 
Han Solo 
Chewbacca 
+0

Der 'in'-Operator tut nicht das, was Sie zu tun scheinen. Verwende 'indexOf'. – zzzzBov

Antwort

1

Sie haben string.indexOf(substring) zu verwenden:

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

string.indexOf(substring) gibt den Index des Teils im String oder -1 wenn der Teil nicht gefunden werden kann. Wenn wir nach "alles außer -1" suchen, können wir sicherstellen, dass die returnedChars in der selectedChars sind.

+0

ah, ich hatte versucht mit (selectedChars.indexOf (returnedChars)). Ich habe es nicht gegen die! == - 1 geprüft, danke, dass du das erklärst! – James

0

nicht in Operator anwenden. Statt indexOf verwenden:

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

Ja, es ist nicht Python, es ist Javascript :)

Sie indexOf() Methode auf Arrays verwenden können.

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

Sorry ,, search() ist für Strings.

Verwandte Themen