1. 程式人生 > >JS判斷一個數組中是否有重複值的三種方法

JS判斷一個數組中是否有重複值的三種方法

參考 http://superivan.iteye.com/blog/1131328


var ary = new Array("111","22","33","111");

var s = ary.join(",")+",";

 for(var i=0;i<ary.length;i++) {

 if(s.replace(ary[i]+",","").indexOf(ary[i]+",")>-1) {

  alert("陣列中有重複元素:" + ary[i]);

  break;

 }

}



缺點:如果陣列的內容是var ary = new Array("111","22","33","1111");
那同樣會提示陣列有重複元素。因為後者的1111包含了前者的內容。因此該方法不是很準確。

推薦第二種方法:


var ary = new Array("111","22","33","111");

var nary=ary.sort();

 for(var i=0;i<ary.length;i++){

 if (nary[i]==nary[i+1]){

  alert("陣列重複內容:"+nary[i]);

 }

}


第三種方法


function isRepeat(arr){

     var hash = {};

     for(var i in arr) {

         if(hash[arr[i]])

              return true;

         hash[arr[i]] = true;

     }

     return false;

}