Как управлять несколькими, если и еще в JavaScript - PullRequest
2 голосов
/ 08 марта 2019

Эта программа выводит: «Никто не занят, это просто вопрос ПРИОРИТЕТОВ».Если пользователь отвечает «нет» на вопрос о времени, я хочу сказать, что если вы ответили «нет» на вопрос о времени, и «да» хотя бы на один другой вопрос.Если вы отвечаете «нет» на все вопросы, вместо этого следует сказать «Вы не от нас».Я не уверен, как изменить этот код, чтобы получить этот результат.

var javascript = prompt("Want to learn javascript? (Type yes or no)");
var docker = prompt("Want to learn docker? (Type yes or no)");
var time = prompt ("do you have time ? (type yes or no)");

if(time === "no") {
   alert("Nobody is busy its just a matter of PRIORITIES");
}
if ((javascript ==="yes" && time === "yes") && (docker === 'yes' && time ==='yes') ) {
   alert("keep patience first learn docker and then learn javascript");
}    
else if (javascript === "yes" && docker === "yes") {
   if (time === "no") {
      alert("so what should I do  if u don't have time ?");
   }
}	
else if (javascript ==="yes" && time === "yes") {
   alert("go and learn javascript");
}
else if (time ==='no' && javascript === "yes") {
   alert("\"A smarter way to learn javascript\" will solve your problem in less time ");
}
else if (docker === 'yes' && time ==='yes') {
   alert(' go n learn docker');
}
else if (time ==='no' && docker === "yes") {
   alert("\"Docker Deep Dive\" will solve your problem in less time ");
} 
else {
   alert('You are not from us');
}

Ответы [ 2 ]

4 голосов
/ 09 марта 2019

Все рекомендации и предложения действительно полезны.Я изменил вопрос .Если вы отвечаете «нет» на все вопросы, он должен вместо этого сказать «Вы не от нас» и не должен печатать «Никто не занят, это просто вопрос ПРИОРИТЕТОВ», в этом случае, только когда время «нет»должен печатать "Никто не занят, это просто вопрос ПРИОРИТЕТОВ"

function promptToBoolean(txt) {
  return /yes/i.test(prompt(txt));
}

var javascript = promptToBoolean("Want to learn javascript? (Type yes or no)");
var docker = promptToBoolean("Want to learn docker? (Type yes or no)");
var time = promptToBoolean("do you have time ? (type yes or no)");

if (!time) {
  alert("Nobody is busy its just a matter of PRIORITIES");
}

if (javascript && time && docker) {
  alert("keep patience first learn docker and then learn javascript");
} else if (javascript && docker && !time) {
  alert("so what should I do  if u don't have time ?");
} else if (javascript && time) {
  alert("go and learn javascript");
} else if (!time && javascript) {
  alert("\"A smarter way to learn javascript\" will solve your problem in less time ");
} else if (docker && time) {
  alert('go n learn docker');
} else if (!time && docker) {
  alert("\"Docker Deep Dive\" will solve your problem in less time ");
} else {
  alert('You are not from us');
}

function promptToBoolean(txt) {
  return /yes/i.test(prompt(txt));
}

var javascript = promptToBoolean("Want to learn javascript? (Type yes or no)");
var docker = promptToBoolean("Want to learn docker? (Type yes or no)");
var time = promptToBoolean("do you have time ? (type yes or no)");

if (time) {
  if (javascript && docker) {
    alert("keep patience first learn docker and then learn javascript");
  } else if (javascript) {
    alert("go and learn javascript");
  } else if (docker) {
    alert('go n learn docker');
  }
} else {
  alert("Nobody is busy its just a matter of PRIORITIES");

  if (javascript && docker) {
    alert("so what should I do  if u don't have time ?");
  } else if (javascript) {
    alert("\"A smarter way to learn javascript\" will solve your problem in less time ");
  } else if (docker) {
    alert("\"Docker Deep Dive\" will solve your problem in less time ");
  } else {
    alert('You are not from us');
  }
}

function promptToBoolean(txt) {
  return /yes/i.test(prompt(txt));
}

var javascript = promptToBoolean("Want to learn javascript? (Type yes or no)");
var docker = promptToBoolean("Want to learn docker? (Type yes or no)");
var time = promptToBoolean("do you have time ? (type yes or no)");

if (time) {
  if (javascript && docker) {
    alert("keep patience first learn docker and then learn javascript");
  } else if (javascript) {
    alert("go and learn javascript");
  } else if (docker) {
    alert('go n learn docker');
  }
} else {
  alert("Nobody is busy its just a matter of PRIORITIES");

  if (javascript && docker) {
    alert("so what should I do  if u don't have time ?");
  } else if (javascript) {
    alert("\"A smarter way to learn javascript\" will solve your problem in less time ");
  } else if (docker) {
    alert("\"Docker Deep Dive\" will solve your problem in less time ");
  } else {
    alert('You are not from us');
  }
}
4 голосов
/ 08 марта 2019

Мое первое предложение - использовать true / false логический вместо проверки строк "yes" и "no", чтобы упростить ваш код.Я сделал функцию, которая поможет преобразовать это для вас.Он также обрабатывает то, что происходит, если кто-то, например, наберет "NO" или "yEs".

Кроме того, простое использование согласованного форматирования облегчает чтение кода.

function promptToBoolean(txt) {
  return /yes/i.test(prompt(txt));
}

var javascript = promptToBoolean("Want to learn javascript? (Type yes or no)");
var docker = promptToBoolean("Want to learn docker? (Type yes or no)");
var time = promptToBoolean("do you have time ? (type yes or no)");

if (!time) {
  alert("Nobody is busy its just a matter of PRIORITIES");
}

if (javascript && time && docker) {
  alert("keep patience first learn docker and then learn javascript");
} else if (javascript && docker && !time) {
  alert("so what should I do  if u don't have time ?");
} else if (javascript && time) {
  alert("go and learn javascript");
} else if (!time && javascript) {
  alert("\"A smarter way to learn javascript\" will solve your problem in less time ");
} else if (docker && time) {
  alert('go n learn docker');
} else if (!time && docker) {
  alert("\"Docker Deep Dive\" will solve your problem in less time ");
} else {
  alert('You are not from us');
}

Еще один способ помочь им управлять - лучше следовать логике, не повторяться и не использовать ненужные скобки или вложенные операторы.

Например, этот

if ((javascript ==="yes" && time === "yes") && (docker === 'yes' && time ==='yes') ) {

может быть переписан как просто

if (javascript && time && docker) {

И тогда это:

} else if (javascript === "yes" && docker === "yes") {
    if (time === "no") {
        alert("so what should I do  if u don't have time ?");
    }
}

может быть повторнозаписывается как:

} else if (javascript && docker && !time) {
    alert("so what should I do  if u don't have time ?");
}

Я также рекомендую разбивать вещи на большие куски для управления логикой, например с time, который, казалось, проверялся довольно часто, так что вы можете просто сделать этопроверьте один раз, а затем управляйте своей другой логикой внутри этих блоков кода

if (time) {
  //Put everything in here where time is true
} else {
  //Put everything in here where time is false
}

Примерно так:

function promptToBoolean(txt) {
  return /yes/i.test(prompt(txt));
}

var javascript = promptToBoolean("Want to learn javascript? (Type yes or no)");
var docker = promptToBoolean("Want to learn docker? (Type yes or no)");
var time = promptToBoolean("do you have time ? (type yes or no)");

if (time) {
  if (javascript && docker) {
    alert("keep patience first learn docker and then learn javascript");
  } else if (javascript) {
    alert("go and learn javascript");
  } else if (docker) {
    alert('go n learn docker');
  }
} else {
  alert("Nobody is busy its just a matter of PRIORITIES");

  if (javascript && docker) {
    alert("so what should I do  if u don't have time ?");
  } else if (javascript) {
    alert("\"A smarter way to learn javascript\" will solve your problem in less time ");
  } else if (docker) {
    alert("\"Docker Deep Dive\" will solve your problem in less time ");
  } else {
    alert('You are not from us');
  }
}
...