我想通過將另一個數組傳遞給過濾器函數來過濾數組的值。在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()函數。 –