我想通过将另一个数组传递给过滤器函数来过滤数组的值。在javascript中传递一个比较数组来过滤函数
x = [1,2,3];
y = [2,3];
var n = x.filter(filterByArray);
function filterByArray(element, index, array, myOtherArray){
// some other code
});
在函数中将“y”传递给“myOtherArray”原型的最佳方法是什么?
我想通过将另一个数组传递给过滤器函数来过滤数组的值。在javascript中传递一个比较数组来过滤函数
x = [1,2,3];
y = [2,3];
var n = x.filter(filterByArray);
function filterByArray(element, index, array, myOtherArray){
// some other code
});
在函数中将“y”传递给“myOtherArray”原型的最佳方法是什么?
您可以使用第二个参数.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);
不能更改回调的签名,但你可以有一个单独的类,它的另一个数组作为参数:
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);
不是真的有用,是吗?不要传递方法。 – Bergi
预期输出是什么?\ – sinhayash
我试过.bind(),但它不适用于我。输出并不重要,比如我想过滤出重复的元素,这只是一个例子。我已经找到了不使用.filter()的方法,但我宁愿使用.filter()函数。 –