Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否在u.filter中访问this.var?_Javascript_Jquery_Underscore.js - Fatal编程技术网

Javascript 是否在u.filter中访问this.var?

Javascript 是否在u.filter中访问this.var?,javascript,jquery,underscore.js,Javascript,Jquery,Underscore.js,我有一个变量this.myvar,它是一个数组。我想用这个变量创建一个.filter(),但是在.filter()函数中,我的这个.myvar是未知的 有没有办法解决这个问题,或者我完全误解了什么 this.my_array = ['aaa', 'bbb', 'ccc', 'ddd']; this.my_filter = ['aaa', 'ccc']; my_filtered_object = _.filter(this.my_array, function(item) {

我有一个变量this.myvar,它是一个数组。我想用这个变量创建一个
.filter()
,但是在
.filter()
函数中,我的
这个.myvar
是未知的

有没有办法解决这个问题,或者我完全误解了什么

this.my_array = ['aaa', 'bbb', 'ccc', 'ddd'];
this.my_filter = ['aaa', 'ccc'];

my_filtered_object = _.filter(this.my_array, function(item) {           
    alert(this.my_filter.toSource());   
    /*          
    if(this.my_filter.indexOf(item) != -1) {
                return item;
    }
    */
});

警报应显示this.my\u filter的值,但似乎在
\u.filter()
中无法访问该变量

有各种解决方案

  • 将引用存储在单独的变量中:

    var my_filter = this.my_filter;
    my_filtered_object = _.filter(this.my_array, function(item) {           
      alert(my_filter.toSource());   
    });
    
  • 内部的上下文(
    this
    )设置为指向函数外部的
    this

    my_filtered_object = _.filter(this.my_array, function(item) {           
      alert(this.my_filter.toSource());   
    }, this);
    
  • 使用(尽管这可能不适用于所有浏览器):

  • 使用,正如马里奥在回答中所建议的那样


  • 解决方案2对我来说最有意义。

    有多种解决方案

  • 将引用存储在单独的变量中:

    var my_filter = this.my_filter;
    my_filtered_object = _.filter(this.my_array, function(item) {           
      alert(my_filter.toSource());   
    });
    
  • 内部的上下文(
    this
    )设置为指向函数外部的
    this

    my_filtered_object = _.filter(this.my_array, function(item) {           
      alert(this.my_filter.toSource());   
    }, this);
    
  • 使用(尽管这可能不适用于所有浏览器):

  • 使用,正如马里奥在回答中所建议的那样


  • 解决方案#2对我来说最有意义。

    如果要访问this.my_筛选器,则需要将传递给#.filter()的匿名函数绑定到您的上下文

    使用下划线,您只需按如下方式更改代码:

    my_filtered_object = _.filter(this.my_array, _.bind(function(item) {           
        alert(this.my_filter.toSource());   
        /*          
        if(this.my_filter.indexOf(item) != -1) {
                    return item;
        }
        */
    }, this));
    

    如您所见,我添加了将所需上下文附加到匿名函数的u.bind()方法。

    如果要访问this.my\u筛选器,则传递给u.filter()的匿名函数需要绑定到上下文

    使用下划线,您只需按如下方式更改代码:

    my_filtered_object = _.filter(this.my_array, _.bind(function(item) {           
        alert(this.my_filter.toSource());   
        /*          
        if(this.my_filter.indexOf(item) != -1) {
                    return item;
        }
        */
    }, this));
    

    如您所见,我添加了u.bind()方法,将您需要的上下文附加到匿名函数。

    您可以公开一些代码吗?哦,对不起,我忘了。我已经编辑了这个问题;)可能重复检查这个答案你能暴露一些代码吗?对不起,我忘了。我已经编辑了这个问题;)检查此答案的可能副本