2016-05-10 5 views
0

Я пытаюсь вычеркнуть список имен и console.logging значения, которые соответствуют. Я ошибаюсь, используя (если значение в массив)?javascript - for if value is '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);    
     } 

массива и возвращаемые значения 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», мы можем убедиться, что returnedChars находятся в selectedChars.

+0

ах, я попытался использовать (selectedChars.indexOf (returnChars)). Я не проверял это против! == - 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

Да, это не Python, это Javascript :)

Вы можете использовать indexOf() метод массивов.

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

Извините, поиск() предназначен для строк.