FizzBuzz

Вот вроде как самое простое решение

var number = 15;
var taskResult;

if(number % 3 === 0){
taskResult = ‘Fizz’;
}
if(number % 5 === 0){
taskResult = ‘Buzz’;
}
if(number % 3 === 0 && number % 5 === 0){
taskResult = ‘FizzBuzz’;
}
if(number % 3 != 0 && number % 5 != 0){
taskResult = number;
}

5 лайков
var number = 15;
var taskResult;
taskResult = number;

if (!(number%3)) {
  var taskResult = 'Fizz';
}
if (!(number%5)) {
  var taskResult = 'Buzz';
}
if (!(number%5) && !(number%3)) {
  var taskResult = 'FizzBuzz';
}
3 лайка

Чтобы не использовать console.log после каждого условия, я сделал таким образом:

var number = 15;
console.log('Number = ' + number);
var taskResult;

if (number % 3 == 0 && number % 5 == 0) {
taskResult = 'FizzBuzz';
}
else if (number % 3 == 0){
taskResult = 'Fizz';
}  
else if (number % 5 == 0){
taskResult = 'Buzz';
}
else {
taskResult = number;
}
console.log('TaskResult = ' + taskResult);

Вот так получилось)) Прокомментируйте код, если есть замечания.

var number = 15;
var taskResult;

if(number % 3 === 0) {
taskResult = “Fizz”;
if(number % 3 === 0 && number % 5 === 0) {
taskResult = “FizzBuzz”;
}
} else if(number % 5 === 0) {
taskResult = “Buzz”;
if(number % 3 === 0 && number % 5 === 0) {
taskResult = “FizzBuzz”;
}
} else {
taskResult = number;
}

if(number % 3 === 0 && number % 5 === 0) {
taskResult = “FizzBuzz”;
}

а вот это зачем 2 раза повторять? вы из Баден-Бадена?

var number = 15;
var taskResult;

if(number%5===0){
taskResult=‘Buzz’;
console.log(taskResult);
if(number%3===0){
taskResult=‘Fizz’;
console.log(taskResult);
if(number%3===0 && number%5===0){
taskResult=‘FizzBuzz’;
console.log(taskResult);
}}}else{
taskResult=number;
console.log(taskResult);
}
вопрос вот в чем, второе условие у меня это fizz не проходит проверку, менял местами то же самое, второе не проходит вне зависимости от порядка

смотрите как работает ваш скрипт:
if ( number%5===0 ) {
// присвоение и много условий исчо //
} else { taskResult=number; }

независимо от того, будет ли число 18 делиться на 3 без остатка, будет возвращать число, т.к. оно не делится на 5 без остатка (то самое иначе). А вариант с 15, будет частным случаем срабатывания первой проверки, а как следствие третьей.

вы запутались вот тут }}}else{
переделайте немного, используя else if (ну или вообще по-другому можно забабахать)

спасибо за помощь, понял что ничего не понял,
попробовал использовать else if как в примере у кого то было работает,с ней так все 6 заданий можно пройти
if(number%3===0 && number%5===0){
taskResult=‘FizzBuzz’;
console.log(taskResult);
}
else if (number%5===0){
taskResult=‘Buzz’;
console.log(taskResult);
}
else if(number%3===0){
taskResult=‘Fizz’;
console.log(taskResult);
} else {
taskResult=number;
console.log(taskResult);
}

var number = 30;
var taskResult = (number % 3 == 0 && number % 5 == 0) ? “FizzBuzz”:
(number % 3) == 0 ? “Fizz” :
(number % 5) == 0 ? “Buzz” :

           number;

Все работает!

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

1 лайк

Я попрактиковался на паре заданий =)
Благодарю за подсказку.

Не могу понять, в чём ошибка. Проходит 2 проверки из 4х.
var number = 15;
var taskResult;

if (number % 3== 0 && number % 5 == 0) {
taskResult = ‘FizzBuzz’;
} else {
number;
}

if (number % 3 == 0) {
taskResult = ‘Fizz’;
}

if (number % 5 == 0) {
taskResult = ‘Buzz’;
}

else {
taskResult = number;
}

  1. убирайте else, т.к. у вас каждая проверка независима от предыдущей.
  2. на этапе объявления taskResult присвойте значение number, чтобы избавиться от else насовсем
  3. проверку на FizzBuzz поместите в конец, чтобы простые сравнения не затерли результат двойного сравнения

а ты хитер))

У меня вышел такой вариант.

var number = 32;
var taskResult = number;

if (number % 3 == 0) {
taskResult = ‘Fizz’;
}
if (number % 5 == 0) {
taskResult = ‘Buzz’;
}
if (number % 3 == false && number % 5 == false) {
taskResult = ‘FizzBuzz’;
}

console.log(taskResult);

поясните за что спасибо?

и где эта ошибка и в чём?

for (var i = 1; i <= 20; i++) {
var str = (i%3 ? '' : 'Fizz')+(i%5 ? '' : 'Buzz');
console.log(str == '' ? i : str);
}

потому что это возвращает false в случае целочисленного деления без остатка на 15, а должно true

const range = 100;
const firstNumber = 3;
const secondNumber = 5;


for (let i = 1; i <= range; i++) {

    if (i % firstNumber === 0 && i % secondNumber === 0){
        console.log(i + ` Делится на ${firstNumber} и на ${secondNumber} `)
    } else if (i % secondNumber === 0) {
        console.log(i + ` Делится на ${secondNumber}`)
    } else if (i % firstNumber === 0) {
        console.log(i + ` Делится на ${firstNumber}`)
    } else {
        console.log(i + ' Не делится')
    }

}

Както так.