了解两个代码解决方案之间的结果差异



我在很多方面都是新手,所以请放轻松:)

这是我的任务是使用javascript解决的一个问题:

打印出 1 - 20 之间的数字。规则:对于可被 3 整除的数字,请打印出"嘶嘶声"。对于可被 5 整除的数字,请打印出"Buzz"。对于可被 3 和 5 整除的数字,请在控制台中打印出"FizzBuzz"。否则,只需打印出数字即可。

这是我第一次尝试接近它:

 var numberArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
for(var i = 0; i < numberArray.length; i++){
    if(i % 3 === 0 && i % 5 === 0){
       console.log("FizzBuzz"); 
    }
    else if(i % 3 === 0 && i % 5 !== 0){
        console.log("Fizz");
    }
    else if(i % 3 !== 0 && i % 5 === 0){
        console.log("Buzz");
    }
    else {
        console.log(numberArray[i]);
    }
}

这返回了以下不正确的值:

嘶嘶嘶嘶23嘶嘶声5巴 斯嘶嘶声89嘶嘶声巴 斯12嘶嘶声1415嘶嘶嘶嘶1718嘶嘶声20

然后我采取了一种不同的方法,这确实导致了正确的答案:

    var fizBuzz = function() {
        for (i = 1; i < 21; i++) {
        if (i % 3 === 0 && i%5 === 0) {
        console.log ("FizzBuzz");
        } else if (i % 3 === 0) {
        console.log ("Fizz");
        } else if (i % 5 === 0) {
        console.log ("Buzz");
        } else {
        console.log (i);
        }
        }
};
fizBuzz();

有人愿意帮助我了解第一种方法的错误吗?这真的很困扰我:)

问题是你正在检查 i(从 0 开始)而不是 numberArray[i](从 1 开始)的可除性。

最新更新