使用Coffeescript中的属性扩展对象?

时间:2012-11-18 12:22:44

标签: coffeescript

我有一个字符串文字数组,我想循环它们,将它们解析为JSON并向结果对象添加属性。我想将结果分配给变量。

我希望它看起来很漂亮:)

现在我正在这样做:

strings = ['{"a": "A", "b": "B"}', '{"c": "C", "d": "D"}']
objects = for string in strings
  obj = JSON.parse string
  obj.e = 'E'
  obj

这给了我一个看起来像这样的数组:

[{ a: 'A', b: 'B', e:'E' }, { c: 'C', d: 'D', e:'E' }]

现在这个有效,但看起来有点难看。我想我想要的是类似http://documentcloud.github.com/underscore/#extend的内容(但我不想仅为这一方法包含下划线)

我发现了这个问题:https://github.com/jashkenas/coffee-script/issues/880 和pullrequest:https://github.com/jashkenas/coffee-script/pull/2177 但是pullrequest是开放的,问题是关闭的,所以我假设至少没有运营商这样做?

但是在编写代码时,我不禁想到必须有更好的方法,所以任何提示都会受到欢迎。

1 个答案:

答案 0 :(得分:4)

以下是一些参考:http://coffeescript.org/documentation/docs/helpers.html

extend = exports.extend = (object, properties) ->
  for key, val of properties
    object[key] = val
  object

strings = ['{"a": "A", "b": "B"}', '{"c": "C", "d": "D"}']
objects = for string in strings
  extend JSON.parse(string), e: 'E'