首页 > 代码库 > 数组去重的方法

数组去重的方法

1、逐一比对,若相同就不存入,若没有相同的则存入数组:
<p>原数组:<span id="array1"></span></p>
    <p>去重数组:<span id="array2"></span></p>    
    <script type="text/javascript">
        //函数
        function delCop(aData){            
            var deptArray=new Array();
            deptArray.push(aData[0]);            
            for(var i=0; i<aData.length; i++){
                var repeat=false;
                 for(var j=0; j<deptArray.length; j++){         
                    if(aData[i]==deptArray[j]){
                        repeat=true;
                        break;
                    }
                }
                if(!repeat){
                    deptArray.push(aData[i]);
                }        
             }    
            return deptArray
        }    
        //使用
            var aData=[2,3,5,63,3432,23,4,4,5,我爱天安门,我爱天安门];
        document.getElementById(array1).innerHTML=aData;
        document.getElementById(array2).innerHTML=delCop(aData);            
    </script>

2、利用sort排序后去重(推荐):
<p>原数组:<span id="array1"></span></p>
    <p>去重数组:<span id="array2"></span></p>
    <script type="text/javascript">    
        //函数
        function delCop(aData){            
            var deptArray=new Array();
            aData.sort();
            deptArray.push(aData[0]);    
            for(var i=0; i<aData.length; i++){
                if(aData[i]!=deptArray[deptArray.length-1]){
                    deptArray.push(aData[i]);
                }
             }    
            return deptArray;
        }    
        //使用
        var aData=[2,3,5,63,3432,23,4,4,5,我爱天安门,我爱天安门];
        document.getElementById(array1).innerHTML=aData;
        document.getElementById(array2).innerHTML=delCop(aData);                    
    </script>    

3.利用hash表的方法去重数组:(把原数组暂存新数组后,并为属性赋值1):
<p>原数组:<span id="array1"></span></p>
    <p>去重数组:<span id="array2"></span></p>
    <script type="text/javascript">
        //函数
        function delCop(aData){            
            var deptArray=new Array();
            var otemp={};
            for(var i=0;i<aData.length; i++){
                if(!(otemp[aData[i]])){
                    deptArray.push(aData[i]);
                }
                otemp[aData[i]]=1;
            }            
            return deptArray;
        }    
        //使用唯一缺点,区分不了带引号和不带引号的数字。
        var aData=[2,3,5,63,3432,23,6,6,5,我爱天安门];
        document.getElementById(array1).innerHTML=aData;
        document.getElementById(array2).innerHTML=delCop(aData);        
    </script>    

 

数组去重的方法