Почему вывод неправильный, если я добавлю оператор else - PullRequest
0 голосов
/ 25 апреля 2020

Из приведенного ниже кода я получаю ответ true, если не включить оператор else. Если еще, заявление включено, то я получаю ложное. Почему это так?

function search(arr, item) {


    for (let i=0; i <  arr.length; i++){  
        if (arr[i] == item){ 
            return true;
        }
        else{
            return false;
        }

    }   
}

src = search([6, 2, 3, 4], 3);
console.log(src);

Ответы [ 4 ]

3 голосов
/ 25 апреля 2020

Каждый return оператор завершает функцию.

Вы проверяете только первый элемент, и если вы не нашли элемент, вы возвращаете false. Это также останавливает итерацию.

0 голосов
/ 26 апреля 2020

Ну, вы можете сделать это так, без каких-либо условий:

function search(arr, item) {
isFound=false;
for (let i=0; i < arr.length; i++){  
  if (arr[i] == item){ 
    isFound=true;
   }
 }   
  return isFound;
}

src = search([6, 2, 3, 4], 3);
console.log(src);
0 голосов
/ 25 апреля 2020

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

function search(arr, item) {
  for (let i=0; i <  arr.length; i++){  
    if (arr[i] == item){ 
        return true;
    }
  }
  return false;
}

src = search([6, 2, 3, 4], 3);
console.log(src);
0 голосов
/ 25 апреля 2020

Это потому, что он вернется после первой проверки. Функция, которую вам нужно использовать в вашем конкретном случае c:

function search(arr, item) {
  return arr.includes(item)  
}

const src = search([6, 2, 3, 4], 3);
console.log(src);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...