Javascript 寻找并摧毁自由代码阵营挑战的论据
我试图理解下面的搜索和销毁挑战 任务:将为您提供一个初始数组(destroyer函数中的第一个参数),后跟一个或多个参数。从初始数组中删除与这些参数值相同的所有元素Javascript 寻找并摧毁自由代码阵营挑战的论据,javascript,function,filter,arguments,iteration,Javascript,Function,Filter,Arguments,Iteration,我试图理解下面的搜索和销毁挑战 任务:将为您提供一个初始数组(destroyer函数中的第一个参数),后跟一个或多个参数。从初始数组中删除与这些参数值相同的所有元素 This is the initial code below: function destroyer(arr) { // Remove all the values return arr; } destroyer([1, 2, 3, 1, 2, 3], 2, 3); 经过几次(实际上)尝试并查看其他人的代码后,我能够解决
This is the initial code below:
function destroyer(arr) {
// Remove all the values
return arr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
经过几次(实际上)尝试并查看其他人的代码后,我能够解决该任务。然而,我认为这更多的是出于运气。我复制了下面的代码,但我希望有人能为我澄清一些事情
功能销毁程序(arr){
var args=Array.from(arguments);//这还会将它们转换为数组
var iteratethrawarr=函数(val){
if(参数索引of(val)=-1){
返回args;
}
};
返回arr.filter(iteratethrawarr);
}
这听起来很难理解,但下面是我的解释
功能销毁程序(arr){
var args=Array.from(arguments);//这里arr被转换为[Array(6),2,3]
//console.log(args)
/*var iteratethrawarr=函数(val){
if(参数索引of(val)=-1){
返回args;
}
};
返回arr.filter(iteratethrawarr);
*/
//为了更清楚,上面的代码可以重写如下
var arr=arr.filter(函数(val){
console.log(“args=“+args+”val=“+val+”indexOf(val)”+args.indexOf(val))
//在这里,您通过每个arr val进行评级,在本例中,该arr val为[1,2,3,1,2,3]
//如果您不相信我,请取消注释下一个console.log()并查看输出
//console.log(val)
if(参数索引of(val)=-1){
//这就是魔法发生的地方
//现在,您可以使用名为.indexOf()的内置方法检查val是否存在
//通常,如果数组中不存在值,.indexOf()将返回-1
//下面是一个工作示例
/*变量数组=[1,2,3,4,5]
console.log(array.indexOf(1))//0,因为它位于索引0处
console.log(array.indexOf(5))//4,因为它位于索引4
console.log(array.indexOf(10))/-1,因为它不存在
*/
//因此,if值传递上述if语句
//这意味着它不存在于args([Array(6),2,3])上
//其结果将包括在过滤后的数组中
返回args;
}
});
返回arr;
}
var val=驱逐舰([1,2,3,1,2,3],2,3);
//console.log(val)
尝试一下:
功能销毁程序(arr){
//arr1等于arr内部的数组
var arr1=arr.slice(参数);
//arr2变成一个参数为2和3的数组
var arr2=Array.prototype.slice.call(参数,1);
//此函数用于比较两者,并返回元素不等于参数的数组
返回arr1.concat(arr2.filter)(函数(项){
返回!arr1.包括(项目)| |!arr2.包括(项目)
})
}
驱逐舰([1,2,3,1,2,3],2,3)代码>如果您有任何问题,请告诉我。非常感谢!这太棒了!1个后续问题:indexOf是否仅适用于数组,还是也可以用于字符串?