以下是一个程序,是从第一个参数中删除的程序,它始终是一个数组,这些元素等于连续的参数。当我执行以下代码时,只有等于第一个参数的值从输入数组(第一个参数)中删除,但其余的都是完整的。
function destroyer(arr) {
// Remove all the values
var i;
var arr = Array.prototype.slice.call(arguments);
var arr_req = arr[0];
arr_req = arr_req.filter(function(val) {
for(i = 1; i < arr.length; i++) {
if(val === arr[i]) {
return false;
} else {
return true;
}
}
});
return arr_req;
}
console.log(destroyer([1, 2, 3, 1, 2, 3], 2, 3));
但是当我在for循环中使用以下代码时,我得到了正确的预期输出,即[1,1]
arr_req = arr_req.filter(function(val) {
for(i = 1; i < arr.length; i++) {
if(val === arr[i]) {
return false;
}
}
return true;
});
那么,为什么在第一种情况下获得的结果不正确呢?它和后者不一样吗?我是JavaScript的新手。谁能解释一下?
答案 0 :(得分:-1)
function destroyer(arr) {
var i;
var arr=Array.prototype.slice.call(arguments);
var arr_req=arr[0];
arr_req=arr_req.filter(function(val){
var flag;
for(i=1;i<arr.length;i++)
{
if(val===arr[i])
{
flag=false;
return false;
}else{
flag=true;
}
}
return flag;
});
return arr_req; }
console.log(驱逐舰([1,2,3,1,2,3],2,3));