tutorial react objects loop for coffeescript

react - Definición de una matriz de objetos anónimos en CoffeeScript



coffeescript wikipedia (8)

¿Cómo puedo definir una matriz de objetos anónimos en CoffeeScript? ¿Es esto posible en absoluto, usando la sintaxis YAML?

Sé que tener una matriz de objetos con nombre es bastante fácil:

items:[ item1: name1:value1 item2: name:value2 ]

Sin embargo, sería un poco más complicado si esos dos objetos no tuvieran nombres


Creo que la solución de coma es mejor, pero pensé que agregaría esto para completarlo:

a = [ { nameA1: valueA1 nameA2: valueA2 nameA3: valueA3 } { nameB1: valueB1 nameB2: valueB2 nameB3: valueB3 } ]


Estoy muy contento de informar después de un poco de manipulación que puedo hacer que compile de la manera correcta:

items: [ nameA: subA nameB: subB , nameX: subX nameY: subY ]

Resulta justo lo que esperas: una lista de dos objetos anónimos.


Me encontré con un problema relacionado y encontré esta solución. Si desea una matriz de muchos objetos individuales k / v sin llaves, solo sangría algunos de ellos. Parece funcionar.

data = [ "2013-09-25T16:46:52.636Z":3, "2013-09-25T16:47:52.636Z":6, "2013-09-25T16:48:52.636Z":2, "2013-09-25T16:49:52.636Z":7, "2013-09-25T16:50:52.636Z":5, "2013-09-25T16:51:52.636Z":2, "2013-09-25T16:52:52.636Z":1, "2013-09-25T16:53:52.636Z":3, "2013-09-25T16:54:52.636Z":8, "2013-09-25T16:55:52.636Z":9, "2013-09-25T16:56:52.636Z":2, "2013-09-25T16:57:52.636Z":5, "2013-09-25T16:58:52.636Z":7 ]

Produce:

coffee> data [ { ''2013-09-25T16:46:52.636Z'': 3 }, { ''2013-09-25T16:47:52.636Z'': 6 }, { ''2013-09-25T16:48:52.636Z'': 2 }, { ''2013-09-25T16:49:52.636Z'': 7 }, { ''2013-09-25T16:50:52.636Z'': 5 }, { ''2013-09-25T16:51:52.636Z'': 2 }, { ''2013-09-25T16:52:52.636Z'': 1 }, { ''2013-09-25T16:53:52.636Z'': 3 }, { ''2013-09-25T16:54:52.636Z'': 8 }, { ''2013-09-25T16:55:52.636Z'': 9 }, { ''2013-09-25T16:56:52.636Z'': 2 }, { ''2013-09-25T16:57:52.636Z'': 5 }, { ''2013-09-25T16:58:52.636Z'': 7 } ]

Es contraintuitivo para mí; uno pensaría que esto haría sub-objetos, pero creo que la coma al final de la línea le dice que deje de hacer propiedades en ese objeto.


No es una respuesta a la pregunta del OP, pero por si acaso estás aquí por la misma razón que yo ... Si tienes poco Mountain Dew y usas ''='' en lugar de '':'', entonces Coffeescript convertirá tu matriz de objetos en una matriz plana sin un error de compilación:

data = [ one=''one'' two=''two'' , one=''1'' two=''2'' ]

Produce

[''one'', ''two'', ''1'', ''2'']

Inserta más Mountain Dew y reemplaza el ''='' con '':''.


Puede definir la variable mientras define la matriz, por lo que una respuesta desagradable sería:

a = items: [ item1 = name: ''value1'' item2 = name: ''value2'' ]

Funcionaría, pero puede recibir advertencias sobre "variables definidas, pero no utilizadas (elemento1, elemento2)". Una mejor manera sería usar guión bajo, variable utilizada para omitir variables no utilizadas:

a = items: [ _ = name: ''value1'' _ = name: ''value2'' ]

console.log JSON.stringify(a) producirá esto:

{ "items":[ { "name":"value1" },{ "name":"value2" } ] }


Simple: coloque una coma solo en una columna más baja que aquella en la que define sus objetos.

a = [ nameA1: valueA1 nameA2: valueA2 nameA3: valueA3 , nameB1: valueB1 nameB2: valueB2 nameB3: valueB3 ]

Se convertirá:

var a; a = [ { nameA1: valueA1, nameA2: valueA2, nameA3: valueA3 }, { nameB1: valueB1, nameB2: valueB2, nameB3: valueB3 } ];


También puedes agregar un coma entre cada objeto:

items:[ item1: name1:value1 , item2: name:value2 ]


no puedes:

esto es algunos trucos:

items:[ (name:"value1") (name:"value2") ]

otro

items:[ true && name:"value1" true && name:"value2" ]

esto es lo mejor:

items:[ {name:"value1"} {name:"value2"} ]