【问题标题】:Coffeescript forEach function undefinedCoffeescript forEach 函数未定义
【发布时间】:2014-08-18 22:40:17
【问题描述】:

我正在尝试用 CoffeeScript 编写一个 FizzBu​​zz 程序,如下所示:

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。为什么会这样?

【问题讨论】:

    标签: javascript arrays coffeescript


    【解决方案1】:

    由于您使用的是 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
    )
    

    演示:http://jsfiddle.net/ambiguous/ENLfx/

    【讨论】:

      【解决方案2】:

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

      FIDDLE

      【讨论】:

        猜你喜欢
        • 2014-05-18
        • 2012-04-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 1970-01-01
        • 2017-05-01
        相关资源
        最近更新 更多