Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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
如何在filter方法中使用javascript参数?_Javascript_Arguments - Fatal编程技术网

如何在filter方法中使用javascript参数?

如何在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///////

我无法在筛选器方法中使用参数。令人困惑的是,当我使用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//////////////
});
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