2011-09-13 7 views

Respuesta

180

Buena viejo push todavía funciona.

x = [] 
x.push 'a' 
+1

Impresionante. Gracias. –

+9

Autor del [libro de PragProg] (http://pragprog.com/book/tbcoffee/coffeescript) aquí. +1 a la respuesta de Thilo. No quería cubrir los métodos del prototipo 'Array' en el libro, ya que hay mucha documentación de JavaScript buena por ahí. Ver, por ejemplo, https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array#Methods_2 –

+0

¿Qué pasa si tenemos un objeto y no un personaje? –

47

Mucho mejor es usar la lista de comprensiones.

Por ejemplo en lugar de esto:

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

hacer esto en su lugar:

things = (x.color for x in list) 
+23

Eso no agrega valores de la lista a las cosas. Eso reemplaza la matriz de cosas por completo. Acabo de probarlo también. – ajsie

+0

Bueno, seguro ajsie, tienes razón, lo reemplaza, no lo agrega. El punto es, sin embargo, que generalmente cuando estás presionando, a menudo estás haciendo algo ** bastante parecido a ** una comprensión de conjunto de todos modos. No en todos los casos, ciertamente, pero muchas veces. – suranyami

+5

La respuesta de Thilo es la correcta, ¡desplácese hacia abajo! – micapam

2

Si está encadenando llamadas a continuación, desea que el anexados para devolver la matriz en lugar de su longitud. En este caso puede usar .concat ([newElement])

Tiene que ser [newElement] porque concat está esperando una matriz como la que está concatenándose. No es eficiente, pero se ve bien en la configuración correcta.

+0

Encadenar llamadas es algo más elegante que puedes hacer sin embargo, como dijiste "el método no es eficiente" - 'concat' devuelve una nueva matriz construida a partir de los elementos de la matriz A + matriz B. Las referencias a los objetos se guardan para que cambien a un objeto al que se hace referencia ya sea en la matriz A, la matriz B o el resultado del concat se reflejarán también en las otras matrices. – SidOfc

Cuestiones relacionadas