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

时间:2013-10-12 17:18:36

标签: javascript

我在这里不仅仅是一个新手,所以请放轻松我:)

以下是我使用javascript负责解决的问题:

打印出1到20之间的数字。 规则: 对于可被3整除的数字,请打印出“Fizz”。 对于可被5整除的数字,请打印出“Buzz”。 对于可被3和5整除的数字,请在控制台中打印出“FizzBu​​zz”。 否则,只需打印出数字。

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

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

这会返回以下错误值:

FizzBu​​zz 2 3 嘶 五 蜂鸣器 嘶 8 9 嘶 蜂鸣器 12 嘶 14 15 FizzBu​​zz 17 18 嘶 20

然后我采用了一种不同的方法,DID得出了正确答案:

    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();

有人愿意帮我理解第一种方法的错误吗?这真让我烦恼:)

1 个答案:

答案 0 :(得分:4)

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