javascript - 如何在coffeescript中将两个数组压缩到一个对象中?

标签 javascript hash coffeescript

我有以下代码

class A

  constructor: (@message) ->

  parse: (paramNames...) ->
    params = @message.split(/\s/)
    for value, i in params
      @[paramNames[i]] = value

a = new A('foo bar dim sum')
a.parse 'first', 'second', 'third', 'fourth'
console.log a

输出

{
  message: 'foo bar dim sum',
  first: 'foo',
  second: 'bar',
  third: 'dim',
  fourth: 'sum'
}

一切正常,我只是觉得 parse 方法可以做得更干净一些。看来我做错了什么:S

parse() 永远不会被用户调用;它仅在我正在编写的库内部使用。可以安全地假设 paramNames.lengthparams.length始终相等

最佳答案

下划线的object函数正是您所寻找的。将其与 _.extend 结合起来:

class A

  constructor: (@message) ->

  parse: (paramNames...) ->
    params = @message.split(/\s/)
    _.extend @, (_.object paramNames, params)

如果您不使用Underscore,我认为您当前的解决方案已经非常清晰和简单。

关于javascript - 如何在coffeescript中将两个数组压缩到一个对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13907705/

相关文章:

javascript - 在Windows上设置meteor应用程序的ROOT_URL

java - 当 HashMap 增加其大小时,HashMap 中值的索引会发生什么变化?

ruby-on-rails-3.1 - 如何将样板注释或许可证添加到使用 Rails 3.1 Asset Pipeline 编译的 JavaScript 文件的顶部?

java - Arrays.deepHashCode() 不是唯一的

ruby - 为什么 monkeypatching Hash.new 不起作用?

javascript - Rails 将两个表单字段合并为一个

javascript - 同时键盘输入(对 Angular 线游戏移动)

c# - 如何使用 Selenium WebDriver 和 C# 查询 iFrame 内部元素的innerHTML?

javascript - Windows 8 html5 javascript 应用程序中向左滑动的事件名称是什么?

javascript - 如何在没有 PHP 的情况下分解 HTML 代码?