Comment définir un tableau d'objets anonymes dans CoffeeScript? Est-ce possible, en utilisant la syntaxe YAML?
Je sais qu'avoir un tableau d'objets nommés est assez simple:
items:[
item1:
name1:value1
item2:
name:value2
]
Cependant, ce serait un peu plus compliqué, si ces deux objets n'avaient pas de nom
vous ne pouvez pas:
voici quelques astuces:
items:[
(name:"value1")
(name:"value2")
]
un autre
items:[
true && name:"value1"
true && name:"value2"
]
c'est le meilleur:
items:[
{name:"value1"}
{name:"value2"}
]
Simple - placez une virgule par elle-même dans une colonne inférieure à celle dans laquelle vous définissez vos objets.
a = [
nameA1: valueA1
nameA2: valueA2
nameA3: valueA3
,
nameB1: valueB1
nameB2: valueB2
nameB3: valueB3
]
Va devenir:
var a;
a = [
{
nameA1: valueA1,
nameA2: valueA2,
nameA3: valueA3
}, {
nameB1: valueB1,
nameB2: valueB2,
nameB3: valueB3
}
];
Vous pouvez également ajouter une virgule entre chaque objet:
items:[
item1:
name1:value1
,
item2:
name:value2
]
Je pense que la solution par virgule est meilleure, mais je me suis dit que j'ajouterais ceci pour être complet:
a = [
{
nameA1: valueA1
nameA2: valueA2
nameA3: valueA3
}
{
nameB1: valueB1
nameB2: valueB2
nameB3: valueB3
}
]
Vous pouvez définir une variable tout en définissant un tableau, ainsi une réponse laide serait:
a =
items: [
item1 =
name: 'value1'
item2 =
name: 'value2'
]
Cela fonctionnerait, mais vous pourriez recevoir des avertissements sur les "variables définies, mais non utilisées (item1, item2)". Le meilleur moyen serait d’utiliser le trait de soulignement, variable utilisée pour omettre les variables non utilisées:
a =
items: [
_ =
name: 'value1'
_ =
name: 'value2'
]
console.log JSON.stringify(a)
produira ceci:
{
"items":[
{
"name":"value1"
},{
"name":"value2"
}
]
}
Pas une réponse à la question du PO, mais juste au cas où vous êtes ici pour la même raison que moi ... Si vous êtes à court de Mountain Dew et utilisez '=' au lieu de ':', Coffeescript transformera votre tableau d'objets dans un tableau plat sans erreur de compilation:
data = [
one='one'
two='two'
,
one='1'
two='2'
]
Produit
['one', 'two', '1', '2']
Insérez plus de Mountain Dew et remplacez le '=' par ':'.
Je suis très heureux d'annoncer, après un peu de bidouillage, que je pourrais le compiler parfaitement:
items: [
nameA: subA
nameB: subB
,
nameX: subX
nameY: subY
]
Il en résulte exactement ce que vous attendez: une liste de deux objets anonymes.
J'ai rencontré un problème connexe et trouvé cette solution. Si vous voulez un tableau de nombreux objets k/v sans accolades, indiquez simplement certains d’entre eux. Semble faire l'affaire.
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
]
Produit:
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 } ]
C'est contre-intuitif pour moi; vous penseriez que cela ferait des sous-objets mais je pense que la virgule à la fin de la ligne lui dit d'arrêter de créer des propriétés sur cet objet
Pourquoi pas:
list = []
list.Push
prop1: val
prop2: val
list.Push
prop1: val
prop2: val
C'est toujours une énorme amélioration pour moi sur js, très facile à lire, minimale et assez sûre pour écrire.