在 CoffeeScript 中,如何将值附加到数组?
Posted
技术标签:
【中文标题】在 CoffeeScript 中,如何将值附加到数组?【英文标题】:In CoffeeScript how do you append a value to an Array? 【发布时间】:2011-11-15 22:26:53 【问题描述】:在 CoffeeScript 中将值附加到数组的规定方法是什么?我查看了 PragProg CoffeeScript 书,但它只讨论了创建、切片和拼接以及迭代,而不是追加。
【问题讨论】:
【参考方案1】:好旧的push
仍然有效。
x = []
x.push 'a'
【讨论】:
PragProg book 的作者在这里。 +1 对 Thilo 的回答。我不想在书中介绍Array
原型方法,因为那里已经有很多好的 javascript 文档。例如,请参阅developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
如果我们有一个对象,而不是一个角色呢?
我期待 x << '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 结果中引用的对象的更改也将反映在其他数组中。以上是关于在 CoffeeScript 中,如何将值附加到数组?的主要内容,如果未能解决你的问题,请参考以下文章