我是新来的,在编写函数destroyer()来从数组中删除多个值时需要一些帮助。

destroyer()函数将数组和其他数字作为参数传递。这个想法是从数组中删除数字。

例如。

destroyer([1, 2, 3, 1, 2, 3], 2, 3)

输出:[1, 1]
destroyer(["tree", "hamburger", 53], "tree", 53)

输出:["hamburger"]
destroyer([2, 3, 2, 3], 2, 3)

输出:[]
注意:这些示例仅显示另外两个要删除的数字。但是功能destroyer()应该能够删除任意数量的值(即4、5或6个参数)。

但是,我的代码不会产生相同的结果。具体来说,使用console.log,我发现我的过滤器功能无法正常循环。

1)有人可以帮我调试吗?

2)编写此函数有更好的方法吗?

非常感谢你!!!
function destroyer() {

  var args = Array.prototype.slice.call(arguments);

  var itemToRemove = args.slice(1);
  console.log(itemToRemove);
  var newArr = args[0];
  console.log(newArr);

  function filterer(value) {

    for (var i = 0; i < itemToRemove.length; i++) {
      console.log(i);
      console.log(itemToRemove[i]);
      if (value != itemToRemove[i]) {
        return value;
      }
    }
   }

  return newArr.filter(filterer);
}

最佳答案

您的filterer函数可以更简单:

function filterer (value) {
    return itemToRemove.indexOf(value) === -1;
}

10-06 04:17