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


98

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

Answers:



49

更好的方法是使用列表推导。

例如而不是这样:

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

改为这样做:

things = (x.color for x in list)

23
这不会将列表中的值附加到事物上。那将完全替换事物数组。我也测试过了。
2011年

好吧,肯定ajsie,您是对的,它确实替代了它,而不是附加。关键是,然而,通常在进行推送时,无论如何,您通常都在做类似于数组理解的事情。诚然,并非在所有情况下都如此,而是很多时间。
suranyami 2012年

3
@suranyami相反,我想不到这有什么用。我宁愿做things = list,也要简洁得多。
迈克尔·多斯特

@suranyami链接已死。
derekdreery 2013年

@拟人化当然,。这是一个人为的例子。可以说是这样的: colors = (item.color for item in list)
suranyami 2014年

2

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

必须为[newElement],因为concat期望一个与其串联的数组一样。效率不高,但在正确的设置下看起来不错。


链接调用更像是一种时尚的事情,但是,正如您所说的“方法效率不高”一样,它concat返回一个由数组A +数组B的元素构成的新数组。保留对对象的引用,以便对引用的对象进行更改在数组A中,数组B或concat结果也将反映在其他数组中。
SidOfc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.