如何在filter方法中使用javascript参数?
我无法在筛选器方法中使用参数。令人困惑的是,当我使用console.log(参数[1])时,我会得到2。另外,当我使用2作为过滤器时,它也可以工作。但只要我使用参数[1],它就不会过滤掉它。 例如:如何在filter方法中使用javascript参数?,javascript,arguments,Javascript,Arguments,我无法在筛选器方法中使用参数。令人困惑的是,当我使用console.log(参数[1])时,我会得到2。另外,当我使用2作为过滤器时,它也可以工作。但只要我使用参数[1],它就不会过滤掉它。 例如: function destroyer(arr) { // Remove all the values var newArray = a.filter(function(val){ return val != arguments[1]; ///////////will NOT work///////
function destroyer(arr) {
// Remove all the values
var newArray = a.filter(function(val){
return val != arguments[1]; ///////////will NOT work//////////////
});
return newArray;
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
然而,以下工作:
function destroyer(arr) {
// Remove all the values
var newArray = a.filter(function(val){
return val != 2; ///////////will work//////////////
});
return newArray;
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
您试图访问的
参数
不是来自销毁程序
的参数,而是来自数组.filter的回调函数。您必须命名该参数,或者将参数[1]
临时存储到变量中,然后改用该变量
function destroyer(arr) {
var arg1 = arguments[1];
return a.filter(function(val){
return val != arg1;
});
}
// or
function destroyer(arr, arg1) {
return a.filter(function(val){
return val != arg1;
});
}
在筛选函数中,参数是传递给该筛选函数的参数
因此,您必须将destroyer参数存储在另一个变量中才能使用它
// Remove all the values
function destroyer(arr) {
var args = arguments;
var newArray = arr.filter(function(val){
return val != args[1];
});
return newArray;
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
参数[1]取自在filter Method中传递的函数。另一个选项是使用arrow函数。但在我看来,使用参数更干净。@FelixKling,就是这样。但考虑到OP的代码…:D