Javascript 数组的.filter函数中的for循环如何结束?
下面是一个程序,是从第一个参数中删除的程序,它始终是一个数组,元素等于连续参数。当我执行以下代码时,只有与第一个参数相等的值从输入数组(第一个参数)中删除,但其余的值保持不变Javascript 数组的.filter函数中的for循环如何结束?,javascript,Javascript,下面是一个程序,是从第一个参数中删除的程序,它始终是一个数组,元素等于连续参数。当我执行以下代码时,只有与第一个参数相等的值从输入数组(第一个参数)中删除,但其余的值保持不变 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.filte
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));
那么,为什么在第一种情况下不能得到正确的结果呢?这和后者不一样吗?我是JavaScript新手。有人能解释一下吗?功能销毁程序(arr){
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;
});
var i;
var arr=Array.prototype.slice.call(参数);
var arr_req=arr[0];
arr_req=arr_req.过滤器(功能(val){
var标志;
for(i=1;ii在第一种情况下,for
循环将只运行一次。其中的return
语句将中断循环。
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;
});