Сравнение нескольких переменных с логическими операторами для JavaScript - PullRequest
0 голосов
/ 18 октября 2018

Я начал введение в курс JavaScript, и мы переходим к логическим операторам.Цель моего сценария - напечатать оператор, если выполнены несколько условий.

У меня есть 3 переменные (например, x, y, z), и мне нужно, чтобы он выводился на консоль, если x = a ||b AND y = c ||d AND z = e ||е.

Мой код:

var flavor = "strawberry";
var vessel = "cone";
var toppings = "cookies";


if (flavor === "vanilla" || "chocolate" && vessel === "cone" || "bowl" && toppings === "sprinkles" || "peanuts") {
   console.log("I'd like two scoops of " + flavor + "ice cream in a " + vessel + "with  " + toppings + ".");
} else {
	console.log("No ice cream for you.");
}

Он должен иметь ванильный или шоколадный и / или конус или миску && окропляет или арахис, чтобы быть правдивым для печати.С моим кодом он печатает все значения переменных, независимо от того, что они.

Есть ли какой-то синтаксис в моем коде?Или вы не можете сравнить столько вещей в одном утверждении?Как я уже сказал, это вступительный курс, поэтому я не могу себе представить, что это будет так сложно начать.Что-то просто не стреляет в мой мозг.lol

Любая помощь / объяснения будет принята с благодарностью.

Заранее спасибо !!

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Проблема в том, как вы используете условия ИЛИ.В JS, когда вы используете объект, отличный от undefined или null или 0, или "", или NaN, условие возвращает true.

Итак, вам нужно изменитьтот.По сути, если вам нужно сравнить несколько раз с одной и той же переменной, выполните следующие действия:

var flavor = "strawberry";
var vessel = "cone";
var toppings = "cookies";

if ((flavor === "vanilla" || flavor === "chocolate") && (vessel === "cone" || vessel === "bowl") && (toppings === "sprinkles" || toppings === "peanuts")) {
  console.log("I'd like two scoops of " + flavor + "ice cream in a " + vessel + "with  " + toppings + ".");
} else {
  console.log("No ice cream for you.");
}

Или вы можете использовать массивы вместе с функцией includes.

var flavor = "strawberry";
var vessel = "cone";
var toppings = "cookies";

if (["vanilla", "chocolate"].includes(flavor) && ["cone", "bowl"].includes(vessel) && ["sprinkles", "peanuts"].includes(toppings)) {
  console.log("I'd like two scoops of " + flavor + "ice cream in a " + vessel + "with  " + toppings + ".");
} else {
  console.log("No ice cream for you.");
}
0 голосов
/ 18 октября 2018

Существуют правила, описывающие, как вы можете объединить несколько сравнений.

Эти правила известны как приоритет правил, но обычно проще использовать дополнительные скобки для группировки сравнений, чтобывам не нужно больше беспокоиться о правилах предшествования.Вот ваше утверждение if с правильными скобками:

if ((flavor === "vanilla" || flavor === "chocolate") && (vessel === "cone" || vessel === "bowl") && (toppings === "sprinkles" || toppings === "peanuts"))

...