Операторы if / else регистрируют только if, а не else

У меня возникла проблема с домашним заданием по кодированию. Вот:

  • Напишите цикл, который регистрирует "Марко!" когда я четный,
  • "Поло!" когда я нечетный.
  • Не редактируйте существующий код.
  • Подсказка 1. Используйте оператор if / else
  • Подсказка 2: погуглите оператор мода (%)

Моя попытка

let x=11;
let y=4;
let i=x%y;

  if (i) {
 console.info("Marco!")
 }

  else  {
 console.info("Polo")
 }

Это регистрирует Марко, когда мне нужно войти в поло. Итак, пока я пытаюсь решить эту проблему, я хотел посмотреть, как это сделают эксперты.

Используйте % 2, чтобы проверить, четное ли число (точнее, % 2 === 0)

CertainPerformance 02.01.2019 01:52

«не изменять существующий код» немного сбивает с толку, потому что мы действительно не знаем, какие части существовали.

sheriffderek 18.12.2020 22:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
456
2

Ответы 2

Если вы хотите проверить, является ли число четным или нечетным, используйте оператор по модулю (%), который возвращает остаток от деления одного числа на другое. Вы должны изменить свою логику:

let x = 11;
let y = 4;
let i = x % y;

if (i % 2) {
  console.info("Polo!");
} else {
  console.info("Marco!");
}

console.info(i); //So you can see if the above works or not

Вот как это работает:

let i = x % y;

Это делит x на y (делит 11 на 4) и убирает остаток - в этом случае остаток будет 3, то есть i = 3.

А теперь немного хитрости. Если вы хотите узнать, четное ли число, вы можете использовать % 2, что мы и делаем в операторе if. Если число четное, он вернет 0, так как не будет остатка от деления на два. Это сложно, но я покажу вам как могу:

Если у нас есть 6 (который, как мы знаем, четный), и мы проверяем, является ли он четным, разделив его на 2, он должен вернуть 0, поскольку остатка нет:

console.info(6 % 2);

И вот как работает наша логика в первом фрагменте, только она использует логические истинные и ложные значения. Ложные значения:

false
0
''
""
``
null
undefined
NaN

Таким образом, если i четный, модуль вернет 0, что означает, что первый оператор if не будет запущен, потому что i % 2 вернет 0, который оценивается как false, поэтому код будет запускать console.info("Marco!"), если i четный, но console.info("Polo!"), если i нечетный.

Дальнейшее чтение:

Если вы хотите «запустить цикл» ... вам нужно запустить цикл! :)

for (var i = 0; i < 10; i++) {
  // do things!
}

Эти петли уродливые и страшные!

Но - это действительно только начало { и конец } некоторых инструкций.

Затем есть еще несколько вещей.

для (some setup, a condition, what to do after each loop)

  1. настраивать: создает переменную, чтобы отслеживать каждый раз, когда она проходит через направления (обычно это пишется как i, но это просто соглашение - и это для «итератора», «индекса» или чего-то еще. Это может быть что угодно. также быть более сложным
  2. состояние:, пока эта вещь i ниже 10, запустите цикл снова
  3. после каждого цикла: увеличивает i на единицу

Итак - цикл должен просто запускать любой код внутри него ... 10? раз? или 11?

for (var counter = 0; counter < 10; counter++) {
  console.info('curerntly...', counter);
}

Теперь ... что внутри?

Вот тут-то и пригодится бит %. Это классический тип теста "шипящий шум".

for (var i = 0; i < 10; i++) {
  var message = 'Marco';
  
  var isOdd = (i % 2) != 0; // if it can't be evenly divided by 2...
  if (isOdd) {
    message = 'Polo';
  }

  console.info(message);
}

https://jsfiddle.net/sheriffderek/dtkj0aby/

и вы можете написать это по-разному.

for (var i = 0; i < 10; i++) {
  console.info( (i % 2) != 0 ? "Marco" : "Polo" );
}

но это довольно некрасиво! (да, можно даже короче ...)

Так что придерживайтесь того, что помогает вам и вашей команде читать, вместо того, чтобы пытаться стать слишком сумасшедшим и нечитаемым !!! Код так же важен для людей, как и для компьютера. Это наш язык общий.

Другие вопросы по теме