У меня возникла проблема с домашним заданием по кодированию. Вот:
Моя попытка
let x=11;
let y=4;
let i=x%y;
if (i) {
console.info("Marco!")
}
else {
console.info("Polo")
}
Это регистрирует Марко, когда мне нужно войти в поло. Итак, пока я пытаюсь решить эту проблему, я хотел посмотреть, как это сделают эксперты.
«не изменять существующий код» немного сбивает с толку, потому что мы действительно не знаем, какие части существовали.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если вы хотите проверить, является ли число четным или нечетным, используйте оператор по модулю (%), который возвращает остаток от деления одного числа на другое. Вы должны изменить свою логику:
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)
i, но это просто соглашение - и это для «итератора», «индекса» или чего-то еще. Это может быть что угодно. также быть более сложнымi ниже 10, запустите цикл снова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" );
}
но это довольно некрасиво! (да, можно даже короче ...)
Так что придерживайтесь того, что помогает вам и вашей команде читать, вместо того, чтобы пытаться стать слишком сумасшедшим и нечитаемым !!! Код так же важен для людей, как и для компьютера. Это наш язык общий.
Используйте
% 2, чтобы проверить, четное ли число (точнее,% 2 === 0)