【问题标题】:In CoffeeScript how do you append a value to an Array?在 CoffeeScript 中,如何将值附加到数组?
【发布时间】:2011-11-15 22:26:53
【问题描述】:

在 CoffeeScript 中将值附加到数组的规定方法是什么?我查看了 PragProg CoffeeScript 书,但它只讨论了创建、切片和拼接以及迭代,而不是追加。

【问题讨论】:

    标签: arrays append coffeescript


    【解决方案1】:

    好旧的push 仍然有效。

    x = []
    x.push 'a'
    

    【讨论】:

    【解决方案2】:

    使用列表推导更好。

    例如,而不是这样:

    things = []
    for x in list
      things.push x.color
    

    改为这样做:

    things = (x.color for x in list)
    

    【讨论】:

    • 这不会将值从列表附加到事物。这完全取代了 things 数组。我也刚测试过。
    • 好吧,当然 ajsie,你是对的,它确实取代了它,而不是附加。然而,关键是,通常当你推动时,你经常会做一些非常像数组解析的事情。诚然,并非在所有情况下,但很多时候。
    • @suranyami 相反,我想不出有什么用处。我宁愿只做things = list,它更简洁。
    • @suranyami 链接失效了。
    • @anthropomorphic 当然。这是一个人为的例子。假设它是这样的:colors = (item.color for item in list)
    【解决方案3】:

    如果您正在链接调用,那么您希望追加返回数组而不是它的长度。 在这种情况下,您可以使用 .concat([newElement])

    必须是 [newElement] 因为 concat 需要一个与其连接的数组一样的数组。 效率不高,但在正确的设置下看起来很酷。

    【讨论】:

    • 链接调用更像是您可以做的一种时尚的事情,正如您所说的“该方法效率不高” - concat 返回一个由数组 A + 数组 B 的元素构造的新数组。保留对对象的引用,因此对数组 A、数组 B 或 concat 结果中引用的对象的更改也将反映在其他数组中。
    猜你喜欢
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2021-08-21
    • 1970-01-01
    相关资源
    最近更新 更多