具有额外难度层的 Fizz Buzz 问题

Fizz Buzz question with extra difficulty layer

我正在尝试用一个额外的层来解决 Fizz Buzz 问题。

这就是我目前所拥有的。所有这一切都很好,但我还需要一个额外的条件。

是 JS 单元测试

For any other input (valid or otherwise) return a string representation of the input

printFizzBuzz = function(input) {

  // Your code goes here
  for (var i = 1; i <= 20; i++) {

    if (i % 3 === 0 && i % 5 === 0) {
      console.log("FizzBuzz");
    } else if (i % 3 === 0) {
      console.log("FizzBuzz");
    } else if (i % 5 === 0) {
      console.log("Buzz");
    } else {
      console.log(i);
    }
  }
};

谢谢!

您可以使用 .toString() (JS toString) 来更改字符串中的数字:

function printFizzBuzz(input) {

  // Your code goes here
  for (var i = 1; i <= 20; i++) {

    if (i % 3 === 0 && i % 5 === 0) {
      console.log("FizzBuzz");
    } else if (i % 3 === 0) {
      console.log("FizzBuzz");
    } else if (i % 5 === 0) {
      console.log("Buzz");
    } else {
      console.log(i.toString());
    }
  }
};

printFizzBuzz();

如果我是面试官,我希望答案看起来更像这样

function printFizzBuzz(input) {

  // Your code goes here

  for (var i = 1; i <= 20; i++) {

    let by3 = i % 3
    let by5 = i % 5

    switch(0) {
      case by3 + by5:
        console.log("FizzBuzz")
        break

      case by3:
        console.log("Fizz")
        break

       case by5:
         console.log("Buzz")
         break

       default:
         console.log(i.toString())
      }
    }
  }
}

printFizzBuzz()

看题,不是求循环,是求传递给函数的任意值。所以答案应该更像这样

function printFizzBuzz(input) {

  // Your code goes here

  if (typeof input !== ‘number’) {
    return String(input)
  }

  let by3 = input % 3
  let by5 = input % 5

  switch(0) {
    case by3 + by5:
      return "FizzBuzz"

    case by3:
      return "Fizz"

    case by5:
      return "Buzz"

    default:
      return input.toString()
    }
  }
}