Arrays 在CoffeeScript中,如何将值附加到数组中?

Arrays 在CoffeeScript中,如何将值附加到数组中?,arrays,append,coffeescript,Arrays,Append,Coffeescript,在CoffeeScript中,向数组追加值的指定方式是什么?我查阅了PragProg CoffeeScript的书,但它只讨论了创建、切片和拼接,以及迭代,而没有附加内容。Good oldpush仍然有效 x = [] x.push 'a' 更好的方法是使用列表理解 例如,与此相反: things = [] for x in list things.push x.color 改为这样做: things = (x.color for x in list) 如果要链接调用,则希望appen

在CoffeeScript中,向数组追加值的指定方式是什么?我查阅了PragProg CoffeeScript的书,但它只讨论了创建、切片和拼接,以及迭代,而没有附加内容。

Good old
push
仍然有效

x = []
x.push 'a'

更好的方法是使用列表理解

例如,与此相反:

things = []
for x in list
  things.push x.color
改为这样做:

things = (x.color for x in list)

如果要链接调用,则希望append返回数组而不是其长度。 在这种情况下,可以使用.concat([newElement])

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

本文作者+提洛的回答是1。我不想在书中介绍
Array
prototype方法,因为已经有很多好的JavaScript文档了。比如说,如果我们有一个对象,而不是一个字符呢?我本来希望能工作的。这不会把列表中的值附加到东西上。它完全替换了things数组。我也只是测试了一下。当然,ajsie,你是对的,它确实取代了它,而不是附加。然而,关键是,通常当你在推的时候,你总是在做一些类似于数组理解的事情。不可否认,并非所有情况下都是这样,但很多时候都是这样。@suranyami相反,我想不出有什么好用。我宁愿只做
things=list
,它要简洁得多。@suranyami链接已经死了。@当然是拟人化了。这是一个人为的例子。假设它是这样的:
colors=(item.color表示列表中的项)
链接调用是一种更时髦的方法,但是,正如您所说的“该方法效率低下”-
concat
返回由数组a+数组B的元素构造的新数组。保留对对象的引用,以便对数组a、数组B或concat结果中引用的对象所做的更改也将反映在其他数组中。