javascript FizzBuzz Leetcode [已关闭]

n1bvdmb6  于 2023-03-16  发布在  Java
关注(0)|答案(2)|浏览(131)

已关闭。此问题需要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。我希望有人能解释为什么会发生这种情况。谢谢你们,善良的大师们

7d7tgy0s

7d7tgy0s1#

测试用例多次调用您的函数,并且在运行之间未清除数组
示例:

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
};

console.log(fizzBuzz(3))

console.log(fizzBuzz(4))
ttygqcqt

ttygqcqt2#

当你在函数外部声明arr时,你就创建了一个全局变量,这意味着每次调用fizzBuzz函数时,你都会将新的值压入同一个arr数组,所以,当你在第二个和第三个测试用例中运行这个函数时,前面测试用例的值仍然在arr数组中。2这就是为什么你会看到前几个数字的重复。

相关问题