Javascript 将JS函数转换为coffeescript,并将jQuery.map和选择器作为参数

Javascript 将JS函数转换为coffeescript,并将jQuery.map和选择器作为参数,javascript,jquery,coffeescript,Javascript,Jquery,Coffeescript,我正在将一些JS代码重构为CoffeeScript,但函数有问题 这就是工作的JS: $(".comformt_QA").change(function(){ var array = $(".comformt_QA").map(function() { return $(this).val(); }).toArray(); $("[name='comfort_qualitative_assessment.global_comfort_index']").val(

我正在将一些JS代码重构为CoffeeScript,但函数有问题

这就是工作的JS:

$(".comformt_QA").change(function(){
   var array = $(".comformt_QA").map(function() {
      return $(this).val();
   }).toArray();

   $("[name='comfort_qualitative_assessment.global_comfort_index']").val(
      calc_qualitative_assessment_array(array)
   ).change();
});
我的目标是将此snipplet用作函数,并能够调用:

class_to_calc_qualitative_assessment_array(".comformt_QA", "[name='comfort_qualitative_assessment.global_comfort_index']");
以下是咖啡脚本:

@class_to_calc_qualitative_assessment_array = (class_param, target) ->
   array = []
   $(class_param).change ->
      array = $(class_param).map( ->
         $(this).val()
      )
   $(target).val(calc_qualitative_assessment_array(array)).change()
数组总是空的。。。
想法?

如果您将咖啡代码编译为Javascript,结果将是:

this.class_to_calc_qualitative_assessment_array = function(class_param, target) {
  var array;
  array = [];
  $(class_param).change(function() {
    return array = $(class_param).map(function() {
      return $(this).val();
    });
  });
  return $(target).val(calc_qualitative_assessment_array(array)).change();
}; 
Coffeescript将
@
传输到JS中的
this
关键字。此外,函数中没有返回值-这导致coffeescript返回函数的最后一个赋值

也许这是一种可行的方法:

class_to_calc_qualitative_assessment_array = (class_param, target) ->
   array = []
   $(class_param).change ->
      array = $(class_param).map( ->
         $(@).val()
      )
      return
   $(target).val(calc_qualitative_assessment_array(array)).change()
   return
这看起来像这样:

var class_to_calc_qualitative_assessment_array;

class_to_calc_qualitative_assessment_array = function(class_param, target) {
  var array;
  array = [];
  $(class_param).change(function() {
    array = $(class_param).map(function() {
      return $(this).val();
    });
  });
  $(target).val(calc_qualitative_assessment_array(array)).change();
};

谢谢你的回答。但是代码仍然无法工作:/I我怀疑
$(class\u param).change
$(class\u param).map
是否正常工作