已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。
昨天关门了。
Improve this question
所以我试着弄清楚为什么我的代码没有通过第二个(n=5)和第三个(n=15)测试用例,而是在第一个(n=3)测试用例中被接受。
给定整数n,返回字符串数组答案(1索引),其中:
如果i可被3和5整除,则回答[i]==“FizzBuzz”。如果i可被3整除,则回答[i] ==“Fizz”。如果i可被5整除,则回答[i] ==“Buzz”。如果上述条件均不成立,则回答[i] == i(作为字符串)。
下面是我的代码:
let arr = []
var fizzBuzz = function(n) {
for (i = 1; i <= n; i++) {
if ((i % 3 == 0) && (i % 5 == 0)) {
arr.push("FizzBuzz")
} else if (i % 3 == 0) {
arr.push("Fizz")
} else if (i % 5 == 0) {
arr.push("Buzz")
} else arr.push('${i}')
}
return arr
};
这是第2个测试用例的输出:["1","2","Fizz",*"1","2","Fizz",*"4","Buzz"]
-由于某种原因,它将复制前3个i,这是第3个测试用例的输出:["1","2","Fizz",*"1","2","Fizz","4","Buzz","1","2","Fizz",*"4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]
-再次复制8i
结果是它发生的原因是因为我在函数外声明了arr。我希望有人能解释为什么会发生这种情况。谢谢你们,善良的大师们
2条答案
按热度按时间7d7tgy0s1#
测试用例多次调用您的函数,并且在运行之间未清除数组
示例:
ttygqcqt2#
当你在函数外部声明
arr
时,你就创建了一个全局变量,这意味着每次调用fizzBuzz
函数时,你都会将新的值压入同一个arr
数组,所以,当你在第二个和第三个测试用例中运行这个函数时,前面测试用例的值仍然在arr数组中。2这就是为什么你会看到前几个数字的重复。