js数组去重

整理了下数组去重的方法

第一种

function noRepeat1(arr) {
            var result = [], hash = {};
            var newArry=arr.sort(function(num1,num2){return num1-num2;});
            for (var i = 0, elem; (elem = newArry[i]) != null; i++) {
                if (!hash[elem]) {
                    result.push(elem);
                    hash[elem] = true;
                }
            }
            return result;
        }

第二种

function noRepeat2(arr) {
            var temp="",Arry=[];
            var newArry=arr.sort(function(num1,num2){return num1-num2;});
            for (var i = 0; i < newArry.length; i++) {
                if(newArry[i]!=temp){
                    temp=newArry[i];
                    Arry.push(temp);
                }
                else{
                    continue;
                }
            };
            return Arry;
        }

第一二种类似搬运比较的过程,比较好理解。下面第三种思维比较奇特,将原数组存在另一个对象的键值,输出的数组是字符串数组。

function noRepeat3(data){  
           var a = {};  
           for (var i=0; i<data.length; i++) {  
               var v = data[i];  
               if (typeof(a[v]) == 'undefined'){  
                    a[v] = 1;  
               }  
           };  
           data.length=0;  
           for (var i in a){  
                data[data.length] = i;  
           }  
           return data;  
        } 
原文地址:https://www.cnblogs.com/xiaoluoli/p/5999389.html