具有绑定值的数组过滤器

Array filter with bind value

晚上好,

我想创建一个函数,该函数将 return 过滤后的数组,不包含作为 arguments.

传递给此函数的值

这是我为此使用的代码,但它没有按预期 return 过滤数组,但是,如果我 console.log 所有传递给过滤回调函数的参数,它看到它们就像我绑定第 arguments[i] 个元素一样。

这里是代码:

function destroyer(arr) {
  for(var i = 1; i < arguments.length; i++){
    arr.filter(seeker.bind(null, arguments[i]));
  }
  return arr;
}

function seeker(arg, value, index, array){
  console.log(arg, value, index, array);
  return value !== arg;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

这是 console.log 的屏幕截图:

非常感谢您的帮助。

.filter 不会改变原始数组,它 returns 是一个经过任何更改的新数组。您需要将这个新数组分配回 arr 变量。

function destroyer(arr) {
  for(var i = 1; i < arguments.length; i++){
    arr = arr.filter(seeker.bind(null, arguments[i]));
  }
  return arr;
}

function seeker(arg, value, index, array){
  return value !== arg;
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));