以下のオブジェクトとメソッドを使用すると、なぜconsole.log(FizzBuzzPlus.getFizzBuzzCount(20))
0 が出力されるのでしょうか?
var FizzBuzzPlus = {
isFizzBuzzie: function(a) {
if(a%5 === 0 || a%3 === 0) {
if (a%5 === 0 && a%3 === 0) {
return false;
}
return true;
} else {
return false;
}
},
isFizzBuzzieChecker: function(c) {
var theFizzBuzzes = [];
for (var i = 0; i < c; i++) {
if (this.isFizzBuzzie(i)) {
theFizzBuzzes += i + " ";
}
}
return theFizzBuzzes;
},
getFizzBuzzSum: function(b) {
var sum = 0;
for (var i = 0; i < b; i++) {
if (this.isFizzBuzzie(i)) {
sum += i;
}
}
return sum;
},
getFizzBuzzCount: function(c) {
var count = 0;
for (var i = 0; i < c; i++) {
if (this.isFizzBuzzie(i)) {
count++;
}
return count;
}
}
};
console.log(FizzBuzzPlus.isFizzBuzzieChecker(20));
console.log(FizzBuzzPlus.getFizzBuzzSum(20));
console.log(FizzBuzzPlus.getFizzBuzzCount(20));
これが Codecademy の FizzBuzz だとわかる人もいるかもしれません。オンラインの JavaScript エディターを使用してオブジェクトをいじっています。メソッドの出力結果は常に 0 です。3 または 5 で割り切れる 0 ~ 20 の数値の量を返す必要がありますが、3 と 5 の両方ではありません。