2015-08-04 2 views
0

Я новичок в JavaScript, и я по достоинству оценят помощь. Я пытаюсь найти массив для элемента, но я не могу найти правильное решение. Сначала я пробовал это, но не добился успеха.Cheking, если элемент находится в массиве js

var find = function(string, array) { 
    for(i=0;i>=array.length-1;i++){ 
    if(array[i]==string){ 
     return true; 
     } 
    else{ 
     return false; 
     } 
     } 
    }; 

Тогда я попробовал этот

var find = function(string, array) { 
    if(array.indexOf(string)>-1){ 
     return true;} 
    else{ 
     return false; 
     } 

    }; 

, но он не работает с числами Это мои тесты

Test.assertEquals(find("hello", ["bye bye","hello"]), true); 
Test.assertEquals(find("2", ["bye bye","2"]), true); 
Test.assertEquals(find("2", ["bye bye",2]), false); 

ответ

1

Вы возвращающиеся ложь первый раз, когда элемент обнаружил, что не соответствует тому, что вы ищете. Вы должны возвращать false только после того, как весь массив обработан. Ваш цикл также неправильно, если я это 0, он никогда не будет больше или равна длине массива, если массив не пуст:

var find = function(string, array) { 
    for(i=0; i < array.length; i++) { 
    if(array[i]==string) { 
     return true; 
    } 
    } 
    return false; 
}; 

Вы также должны сосредоточиться на именования. Ваша функция называется find, но она фактически не возвращает найденный элемент. Я бы назвал функцию contains.

Это хорошее обучение упражнения, но не изобретать колесо:

[1,2,3,4,5,6].indexOf(foo) > -1 

Это возвращает истину, если foo в массиве.

+1

Ты так много ..... я был так близок: D –

0

Предполагая, что у вас есть Test.assetEquals функция просто использовать построить в функции массива:

Test.assertEquals((["bye bye","hello"].indexOf('hello') > -1),true); 
0

С преобразованием типа:

var a = [1, 2, 3]; 
if (a.some(function (x) { return x == "2" })) { 
    ... 
} 

Строгий сравнения:

if (a.indexOf("2") >= 0) { 
    ... 
} 
Смежные вопросы