我正在尝试使用CoffeeScript编写FizzBuzz程序,如下所示:
array = [1..100]
console.log(array.forEach(
(value)->
if value%3 is 0 and value%5 is 0
return "fizzbuz"
if value%3 is 0
return "fizz"
if value%5 is 0
return "buzz"
value
))
它不断返回undefined
。为什么会这样?
答案 0 :(得分:4)
forEach
数组方法不返回结果数组。它为每个数组元素执行一次函数,并且它不返回任何内容。如果要返回结果数组,请使用map
。
console.log(array.map(
(value)->
if value%3 is 0 and value%5 is 0
return "fizzbuzz"
if value%3 is 0
return "fizz"
if value%5 is 0
return "buzz"
value
))
答案 1 :(得分:4)
由于你正在使用CoffeeScript,简单的for
loops are expressions导致数组,所以你可以说:
console.log(for value in array
if value % 3 is 0 and value % 5 is 0
"fizzbuz"
else if value % 3 is 0
"fizz"
else if value % 5 is 0
"buzz"
else
value
)
或者如果您真的想使用某个功能,请使用do
创建SIF:
console.log(for value in array
do (value) ->
return 'fizzbuz' if value % 3 is 0 and value % 5 is 0
return 'fizz' if value % 3 is 0
return 'buzz' if value % 5 is 0
return value
)