Что-то совсем не получается этот вызов пройти.
Вопрос, тут решение основано только на тех знаниях которые были получены за 2 курса или какую-то информацию надо найти дополнительно?
Здесь потребуется знание оператора % - остаток от деления. В теории он упоминается в курсе “Циклы” - https://htmlacademy.ru/courses/211/run/15
Видимо вызовы лучше проходить уже после основных заданий.
Видимо вызовы лучше проходить уже после основных заданий.
Это да, но этот вызов стоит во второй теме, вот я и предположил, что уже всё знаю для решения.
Я конечно погуглил про оператор %. Но что-то не выходит пока никак. После прохождения курса по циклам, если не получится вернусь на форум с этим вопросом ещё.
Я добавлю в теорию рассказ про оператор «остаток от деления», чтобы было проще. Вызовы — дополнительные задания к главе курса. Спасибо, что обратили на это внимание
Пожалуйста. Приятно, что слышите ваших пользователей!
Добавила в теории задания кусочек про оператор «остаток от деления» =)
Я уже пробовал раньше выполнять задание для собеседования - здесь сделал по аналогии - работает, пробуйте кому пригодится
var number = 15;
var taskResult;
if(number % 3 == 0 && number % 5 == 0){
console.log((taskResult = “FizzBuzz”));
}else if(number % 3 == 0){
console.log((taskResult = “Fizz”));
}else if(number % 5 == 0){
console.log((taskResult = “Buzz”));
}else{
console.log(taskResult = (number));
}
Разные решения задачи я просмотрела. Но все же, я не могу разобраться, почему не работает мой код))) Если не вводить новые переменные, мне он видится логичным. Если кто-нибудь посмотрит и расскажет, где ошибка, буду очень благодарна)
Сводка
var number = 15;
var taskResult;
if (number % 3) {
taskResult = number;
} else {
taskResult = ‘Fizz’;
}
if (number % 5) {
taskResult = number;
} else {
taskResult = ‘Buzz’;
}
if (number % 3 && number % 5) {
taskResult = ‘FizzBuzz’;
}
Чем строже условие, тем выше оно должно располагаться в коде
Вы не указываете, чему именно должен быть равен остаток от деления на 3 или 5. То есть условие расшифровывается как “если есть остаток от деления на …”, любой.
Ну у меня такая логика и была - если есть любой остаток от деления, то есть он больше нуля, условие выполняется, то есть выводится - number. Если нет - Fizz
Я пробовала менять местами, все равно работает через раз
Не так. Любой - это и ноль в том числе.
Но вы же понимаете, что любое число будет делиться и на 3, и на 5, с остатком или без - это уже другой вопрос. Тогда в чем смысл ваших условий, если получается, что все варианты подходят под первое, например.
Основываясь на изученном:
“Действие внутри условия выполняется, если вернулось true
. Если выражение вернуло false
, действие не выполнится.”
"Любые значения внутри проверок приводятся к булеву типу. Все числа кроме 0
— true
, при этом 0
— false
".
Я рассуждала так. "Действие внутри условия выполняется, если вернулось true
" - то есть не равно нулю, а значит делится с остатком и выводить нужно number.
Если в условиях получается ноль, то есть число делится на 3 или на пять, то проверка возвращает - false, и идет по ветке else
Просто вам нужно проанализировать решение других, чем оно отличается от вашего и почему их работает, а ваше нет. Здесь настолько примитивно, что указав вам прямо мы окажем медвежью услугу. Учитесь находить ошибки самостоятельно
Про примитивизм не особо вдохновляет, конечно. Почему все другие решения работают, я разобралась. Я написала сюда, чтобы выяснить, что я поняла неправильно. Попробую спросить по другому. На основании двух конспектов из уроков, я не поняла, почему, например, if (number % 3) - не условие. Я поняла, что если условие в скобках будет равно нулю, то действие не выполнится, либо пойдет по ветке else. Правильно? Объясните, пожалуйста, почему нужно обязательно приравнивать оператором == к нулю.
не обязательно, а желательно. Неявное приведение типов не приветствуется, потому что читаемость кода хуже, вот вы например не видите из-за этого тут ошибку if (number % 3 && number % 5)
В вашем коде порядок менять на самом деле не нужно, тут я ошибся
а вот за этот ответ прям спасибо-преспасибо, теперь все ясно)
Вот так решил, прокомментируйте кто-нибудь, пожалуйста)
var number = 15;
var taskResult;
taskResult = number;
if (!(number%3) && (number%5)) {
taskResult = "Fizz";
}
if (number%3 && !(number%5)) {
taskResult = "Buzz";
}
if (!(number%3) && !(number%5)) {
taskResult = "FizzBuzz";
}
var number = 30;
var taskResult;
if (number % 3 === 0 && number % 5 === 0) {
console.log(taskResult = 'FizzBuzz');
}
if (number % 3 === 0 && taskResult != 'FizzBuzz') {
console.log(taskResult = 'Fizz');
}
if (number % 5 === 0 && taskResult != 'Fizz' && taskResult != 'FizzBuzz') {
console.log(taskResult = 'Buzz');
}
if (number % 1 === 0 && taskResult != 'Fizz' && taskResult != 'Buzz' && taskResult != 'FizzBuzz') {
console.log(taskResult = number);
}