2015-07-22 72 views
0

我想通过将另一个数组传递给过滤器函数来过滤数组的值。在javascript中传递一个比较数组来过滤函数

x = [1,2,3]; 
y = [2,3]; 

var n = x.filter(filterByArray); 

function filterByArray(element, index, array, myOtherArray){ 
    // some other code 
}); 

在函数中将“y”传递给“myOtherArray”原型的最佳方法是什么?

+1

预期输出是什么?\ – sinhayash

+0

我试过.bind(),但它不适用于我。输出并不重要,比如我想过滤出重复的元素,这只是一个例子。我已经找到了不使用.filter()的方法,但我宁愿使用.filter()函数。 –

回答

1

您可以使用第二个参数.filter(callback[, thisArg])将其值this的值设置为“有用”的值,例如您的第二个数组

function filterByArray(element, index, array) { 
    return this.lookup.indexOf(element) > -1; // this.lookup == y 
}; 

var x = [1,2,3], 
    y = [2,3]; 

var result = x.filter(filterByArray, {lookup: y}); 
console.log(result); 

fiddle

1

不能更改回调的签名,但你可以有一个单独的类,它的另一个数组作为参数:

function MyFilter(otherArray) { 
    this.otherArray = otherArray; 
} 

MyFilter.prototype.filterByArray = function(element, index, array) { 
    // you can use this.otherArray here 
}; 

然后:

x = [1,2,3]; 
y = [2,3]; 

var myFilter = new MyFilter(y); 
var n = x.filter(myFilter.filterByArray); 
+0

不是真的有用,是吗?不要传递方法。 – Bergi