去重的时候用for循环是没什么问题的
var arr=[2,3,2,2,2,4,5],
arr2=[];
function find(arr2,ele){
for(var i= 0,len=arr2.length;i<len;i++){
if(arr2[i]==ele) return true;
}
return false;
}
for(var i= 0,len=arr.length;i<len;i++){
if(!find(arr2,arr[i])){
arr2.push(arr[i]);
}
}
改用forEach的时候
function find(arr2,ele){
arr2.forEach(function(item,i){
if(item==ele) return true;
});
return false;
}
arr.forEach(function(item,i,array){
if(!find(arr2,arr[i])){
arr2.push(arr[i]);
}
})
发现结果不对forEach貌似没有在return的时候跳出循环,求教应该如何写呢。。。。
使用 every 和 some 函数
forEach
函数不支持break
,可以用every
函数替代:
function find(arr2, ele) {
arr2.every(function (item, i) {
if (item === ele) {
return false
}
return true
})
}
return false
跳出循环,return true
继续循环,详见 https://developer.mozilla.org...
https://.com/q/10...
貌似可以加标签,可以跳回标签处,待我去验证下!
forEach没办法终止(异常除外。)