2016-07-26 105 views
0

我正在处理一个问题,在这里我提供了一个初始数组(第一个参数在驱逐函数中),后面跟着一个或多个参数。我需要从初始数组中删除与这些参数具有相同值的所有元素。.filter方法中的Javascript参数

函数只需要1个参数(数组),并且可以有任意数量的附加参数,我可以选择它作为“arguments [index]”。

这里是我的代码到现在:

function destroyer(arr) { 
    newArr= [ ]; 
    newArr = arr.filter(function(x){ 
     return x !== arguments[2]; //argumets[2] is equal to 3 
    }); 
    return newArr; 
} 
destroyer([1, 2, 3, 1, 2, 3], 2, 3); 
// => returns [1, 2, 3, 1, 2, 3]; 

但如果我进入3,而不是争论[2],在函数返回[1,2,1,2]。 发生了什么事?

此外,如何循环代码来测试所有其他参数,如果我不能在循环中的函数?

回答

0

参数指的是第二个函数的参数 你可以做这样的事情

 function destroyer(arr) { 
    newArr= [ ]; 
var args = arguments; 
    newArr = arr.filter(function(x){ 
     return x !== args[2]; 
    }); 
    return newArr; 
} 
destroyer([1, 2, 3, 1, 2, 3], 2, 3); 
0

首先,顶端destroyer参数的引用。然后使用内部的filter函数。

function destroyer(arr) { 
    newArr= [ ]; var args = arguments; 
    newArr = arr.filter(function(x){ 
     return x !== args[2]; //destoryer's arguments[2] is equal to 3 
    }); 
    return newArr; 
} 

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

谢谢!但是,我如何检查不仅仅是args [2],而是args [arr.length-1]除0之外的其他参数?我可以在一个过滤器函数内创建一个循环,但是当我使用第一个返回时,它将会取消... –

+0

只需在您完成所需的一切之后,不要返回。我不清楚你需要做什么循环,所以我不知道如何帮助你更多的。想给我们更多关于你需要做什么的想法? – Whothehellisthat

+0

我需要删除(过滤)我的参数[0](数组)中的元素,以及其他所有参数,我可以根据需要有多个参数 - 参数[正整数]。 现在,因为.filter如果“返回布尔值”为false,我会从数组中删除一个元素,我不知道如何循环遍历所有元素,因为循环将取消它看到“返回”。 –