在 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 中,如何将值附加到数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用拖放将值附加到输入表单字段中

如何将值附加到犰狳矩阵?

将值附加到R中的空向量?

如何将值附加到命令行参数数组?

如何将值附加到尚不存在的键?

如何将值列表附加到数据框中的列表列