【问题标题】:How to treat coffeescript single values like arrays如何处理像数组一样的咖啡脚本单个值
【发布时间】:2011-12-09 18:05:39
【问题描述】:

我想编写一些代码,可以轻松地将输入处理为单个值或数组,并对单个值或数组中的每个值执行操作。

理想情况下,代码如下所示:

a = for i in j()
  i++

但是 j 可以返回 1 或 [1, 2, 3]。

我什至看不到以某种方式检查 j 是否返回数组的好方法。也许coffeescript 有一些很好的类型识别系统,所以我可以这样做

if j().isArray then j() else [j()] 

还是什么?

任何人都知道尽可能隐藏此数组转换逻辑的句法吸引人的方法吗?

【问题讨论】:

  • 你应该将 j() 缓存在一个变量中。
  • 看起来 jQuery 有一个我可以使用的 isArray 方法。在这种情况下,这很好,但我更喜欢不使用 jquery 的答案
  • @WTP 这通常是个好建议,但coffeescript 会为您处理好,j() 不会被多次调用。

标签: coffeescript


【解决方案1】:
[].concat j()

如果是数组,将复制结果,否则包装。

【讨论】:

    【解决方案2】:
    asArray = (j) -> if j instanceof Array then j else [j]
    

    然后调用为

    a = for i in asArray(j())
      i++
    

    【讨论】:

    • 是的,看来这就是我要做的事情。
    • instanceof 确实有一些你应该注意的问题:perfectionkills.com/…。如果需要,请使用该页面底部的备用 isArray 定义。
    • 是的,我可能会使用 jquery 的 $.isArray:api.jquery.com/jQuery.isArray
    猜你喜欢
    • 2012-08-24
    • 2013-06-10
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 2013-01-09
    相关资源
    最近更新 更多