js实现数组去重

在js实际应用中会用到数组去重,那么应该怎样实现去重呢?

方法1:

var arr = [1,1,1,2,3,3,2,1,1,1]
        // var obj = {
        //     "1":"avb"
        // }
        Array.prototype.unique = function(){
            var temp ={};
            var arr = [];

            for(var i = 0;i < this.length ; i++){
                if(!temp[this[i]]){
                    temp[this[i]] = 'abc';
                    arr.push(this[i])
                }
            }
            return arr
        }

console.log(arr.unique());//结果为 [1,2,3]

  方法2: 利用hash哈希表(推荐)

var arr = [1,1,1,2,3,3,2,1,1,1]
Array.prototype.unique2 = function () {  
            var hash = [],
            n = [];//hash 哈希表,n 为临时数组
            for(var i = 0; i < this.length; i ++){
                if(!hash[this[i]]){
                    hash[this[i]] = true;//存入哈希表
                    n.push(this[i]);//当前元素push到数组中
                }
            }
            return n
        }
        console.log(arr.unique2())

  方法3

 var arr = [1,1,1,2,3,3,2,1,1,1]
        Array.prototype.unique = function () {  
               var arr = [];
            for(var i = 0; i < this.length;i++){
                if(arr.indexOf(this[i]) == -1){
                   
                    arr.push(this[i])
                }
            }
            return arr
        }
console.log(arr.unique())

  

原文地址:https://www.cnblogs.com/lvxisha/p/12166900.html