js中forEach跳出循环问题

如刀似剑
  • 125

去重的时候用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的时候跳出循环,求教应该如何写呢。。。。

回复
阅读 39.5k
8 个回答

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...

forEach没办法终止(异常除外。)

貌似可以加标签,可以跳回标签处,待我去验证下!

使用 every 和 some 函数

莫小贝
  • 5
新手上路,请多包涵

直接用find就可以啦。

宣传栏