在CoffeeScript中定义一组匿名对象

Pre*_*hev 105 coffeescript

如何在CoffeeScript中定义匿名对象数组?这是否可行,使用YAML语法?

我知道有一个命名对象数组很容易:

items:[
   item1:
      name1:value1
   item2:
      name:value2
]
Run Code Online (Sandbox Code Playgroud)

但是,如果这两个对象没有名称,那将会有点棘手

Mic*_*ays 300

简单 - 将逗号单独放在低于定义对象的列中.

a = [
     nameA1: valueA1
     nameA2: valueA2
     nameA3: valueA3
  ,
     nameB1: valueB1
     nameB2: valueB2
     nameB3: valueB3
]
Run Code Online (Sandbox Code Playgroud)

会变成:

var a;

a = [
  {
    nameA1: valueA1,
    nameA2: valueA2,
    nameA3: valueA3
  }, {
    nameB1: valueB1,
    nameB2: valueB2,
    nameB3: valueB3
  }
];
Run Code Online (Sandbox Code Playgroud)

  • 我认为coffeescript,而不是对香草的简化和改进产生了更多不必要的复杂性.希望只使用简单的.js与rails集成而不需要咖啡. (4认同)

art*_*hur 40

您还可以在每个对象之间添加一个昏迷: 

items:[
    item1:
        name1:value1
  ,
    item2:
        name:value2
]
Run Code Online (Sandbox Code Playgroud)


isl*_*205 28

你不能:

这是一些技巧:

items:[
    (name:"value1")
    (name:"value2")
]
Run Code Online (Sandbox Code Playgroud)

另一个

items:[
    true && name:"value1"
    true && name:"value2"
]
Run Code Online (Sandbox Code Playgroud)

这是最好的:

items:[
    {name:"value1"}
    {name:"value2"}
]
Run Code Online (Sandbox Code Playgroud)

  • 看看我的答案 - 这是完全可行的,没有任何技巧或支撑. (18认同)
  • 不是那么难看:( Coffeescript非常适合它的基于缩进的编码,但对于大型对象文字它并不比标准JSON好多了,因为你必须平衡所有括号,你最终得到令人讨厌的尾随汤.解决这个问题并使用YAML语法的票证,但显然在coffeescript中解析歧义来解决这个问题,这是不幸的. (6认同)

Eva*_*ran 14

我认为逗号解决方案更好,但我想我会为完整性添加它:

a = [
  {
    nameA1: valueA1
    nameA2: valueA2
    nameA3: valueA3
  }
  {
    nameB1: valueB1
    nameB2: valueB2
    nameB3: valueB3
  }
]
Run Code Online (Sandbox Code Playgroud)