使用filter()和Arguments对象。逻辑错误?

时间:2016-06-23 14:38:34

标签: javascript

脚本的目标:将一个数组和多个参数传递给一个函数。必须返回一个数组,减去与参数相同的元素。

没有语法错误,我似乎无法弄清楚逻辑中的错误。

function destroyer(arr) {

 function isTheDestroyer(x) {

   //Using the arguments object
   for (i=1; i<arguments.length; i++) {
      if (x == arguments[i]) {
         return false;
        }
   }
   return true;
 }

var filtered = arguments[0].filter(isTheDestroyer);
return filtered;
}

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

运行时输出没有变化。

1 个答案:

答案 0 :(得分:0)

我同意@James Thorpe。 isTheDestroyer中的参数与驱逐舰中的参数不同(实际上它的顺序不同)。我建议你使用一个闭包

function destroyer(arr) {

var args = arguments;
function isTheDestroyer(x) {

  //Using the arguments object
  for (i=1; i<args .length; i++) {
    if (x == args [i]) {
      return false;
     }
   }
  return true;
}

var filtered = arguments[0].filter(isTheDestroyer);
return filtered;
}

destroyer([1, 2, 3, 1, 2, 3], 2, 3);
相关问题