Создание al oop для оператора else внутри функции - PullRequest
2 голосов
/ 20 июня 2020

Я пытаюсь создать al oop, чтобы включить оператор else. Он отлично работает с оператором if, как показано ниже, но при попытке вставить в статус else он либо ничего не показывает, либо создает 6 циклов. Я предполагаю, что помещаю оператор else не в то место. Может ли кто-нибудь объяснить мне а) куда поместить оператор else и б) критерии вложенности конечных фигурных скобок внутри функции Вот что получил ive, и он отлично работает, пока я не вставлю оператор else. Спасибо

var sports = ["golf", "cricket", "tennis", "badminton", "squash"];

function checkSport(sportToCheck) {
    for (var i = 0; i <= sports.length; i++) {
        if (sportToCheck == sports[i]) {
            alert("yes we offer that sport");
        }
    }
}

checkSport("tennis")

Ответы [ 3 ]

3 голосов
/ 20 июня 2020

Основываясь на ваших именах переменных, я думаю, вам не нужно использовать else в этом контексте, но вы хотели бы завершить цикл / функцию, как только будет найден вид спорта:

function checkSport(sportToCheck) {
  for (var i = 0; i <= sports.length; i++) {
    if (sportToCheck == sports[i]) {
      alert("yes we offer that sport");
      return; // stop the execution of the function
    } else {
      console.log("Do nothing so you don't need this else statement.");
    }
  }
  alert("No we don't offer that sport"); //  If the loop ends and cannot find any match
}
1 голос
/ 20 июня 2020

Поскольку ваша функция - check() и соблюдает правило Do One Thing , лучше вернуть true или false.

Есть много способов решить вашу проблему, но я предпочитаю find () .

var sports = ["golf", "cricket", "tennis", "badminton", "squash"];

function checkSport(sportToCheck) {
  return sportToCheck === sports.find((sport) => sport === sportToCheck);
}
   
console.log(checkSport("football")); // Expect : false
console.log(checkSport("tennis"));   // Expect : true

Если вы хотите улучшить ответ @Hangindev, вы можете сделать это:

   for (sport of sports) {
     true === (sportToCheck === sport) && alert("yes we offer that sport");
   }
0 голосов
/ 20 июня 2020

Нет необходимости в else заявлениях. Просто просмотрите каждое возможное значение в массиве sports и используйте оператор return, чтобы приостановить дальнейшее выполнение скрипта в этой функции.

Функция возвращает либо true, либо false в зависимости от того, является ли строка внутри спортивного массива.

var sports = ["golf", "cricket", "tennis", "badminton", "squash"];

function checkSport(sportToCheck) {
    for (var i = 0; i <= sports.length; i++) {
        if (sportToCheck == sports[i]) {
            alert("yes we offer that sport");
            return true;
        }
        if (i == sports.length) {
            alert("sorry we do not offer this sport");
            return false;
        }
    }
}

checkSport("tennis")

Вы можете использовать это для чего-то вроде:

if (checkSport("tennis")) {
    // sport exists
} else {
    // sport does not exist
}
...