FizzBuzz возвращает пустой массив

Я не совсем уверен, почему это возвращает пустой массив, есть ли у кого-нибудь подсказки или подсказки? Любая помощь приветствуется.

function fizzBuzz() {
  var array = [];
  for (var i = 1; i <= 100; i++) {
    if (i % 3 === 0) {
      array.push("Fizz");
    } else if (i % 5 === 0) {
      array.push("Buzz");
    } else if (i % 3 === 0 && i % 5 === 0) {
      array.push("FizzBuzz");
    }
    return array;
  }
}
fizzBuzz();

2 ответа

Вы возвращаетесь из цикла после первой итерации.

function fizzBuzz() {
  var array = [];
  for (var i = 1; i <= 100; i++) {
    if (i % 3 === 0) {
      array.push("Fizz");
    } else if (i % 5 === 0) {
      array.push("Buzz");
    } else if (i % 3 === 0 && i % 5 === 0) {
      array.push("FizzBuzz");
    }
  }
  return array; // <- !
}
fizzBuzz();

Первая проблема, оператор return находится внутри цикла. Он вернет пустой массив после первой итерации. Вместо этого поместите оператор возврата после цикла.

Вторая проблема, вы должны проверить FizzBuzz в первом операторе if, иначе он никогда не попадет

function fizzBuzz() {
  var array = [];
  for (var i = 1; i <= 100; i++) {
    if (i % 3 === 0 && i % 5 === 0) {
      array.push("FizzBuzz");
    } else if (i % 3 === 0) {
      array.push("Fizz");
    } else if (i % 5 === 0) {
      array.push("Buzz");
    }
  }
  return array;
}
fizzBuzz();
Другие вопросы по тегам