我的循环似乎打印出错误的字符串。我需要15来打印出fizzbuzz。对我来说似乎应该。
var numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
for (i=0; i < numbers.length; i++)
if (numbers[i]%3 === 0 && numbers % 5 !== 0 ){
console.log("Fizz");
} else if (numbers[i] % 5 === 0 && numbers[i] % 3 !== 0) {
console.log("Buzz");
} else if (numbers[i] % 3 === 0 && numbers[i]%5 === 0) {
console.log("FizzBuzz");
} else {
console.log(numbers[i]);
}
};
答案 0 :(得分:0)
那是因为你在第4行写了numbers % 5
而不是numbers[i] % 5
。
作为一般规则,将迭代器存储在变量中非常重要,以避免这种情况(并缓存值而不是每次都检索它)。如果可以,请使用for..of
ES6语法,这样可以使编写更容易,更易读,更不容易出错。
for (const number of numbers) {
if (number % 3 === 0 && number % 5 !== 0 ){
console.log("Fizz");
} else if (number % 5 === 0 && number % 3 !== 0) {
console.log("Buzz");
} else if (number % 3 === 0 && number%5 === 0) {
console.log("FizzBuzz");
} else {
console.log(numbers[i]);
}
}
请记住,Fizzbuzz测试是一个简单的面试问题,由制作StackOverflow的人想象。在此测试中失败不是一个选项:)因此,训练您的代码样式以编写容易出错的代码。
在多个if / else语句中测试之前,尝试将您将考虑的值存储在变量中,例如,这是一个好习惯,它使代码更易读,更容易调试。看到这里,通过不这样做,你花了很多时间来理解错误,并不得不问这个问题。想想如果它是一个真正的行业代码,它将拥有的成本。
祝你好运,代码安全:)