zoukankan      html  css  js  c++  java
  • 数组去重的方法

    // 数组去重分简单数组去重和数组对象去重
            var arr=['aaa','s','d','s','dd','aaa','1','aaa']
            // ------------------------------------------------------------------------------------------
            // 双重循环去重O(n^2)
            function unique(arr){
                var res=[arr[0]]
                for(var i=1;i<arr.length;i++){
                    let flag=true
                    for(var j=0;j<res.length;j++){
                        if(arr[i]==res[j]){
                            flag=false
                            break
                        }
                    }
                    if(flag){
                        res.push(arr[i])
                    }
                }
                return res
            }
            var res=unique(arr)
            console.log('res',res)
            
            // ------------------------------------------------------------------------------------------
    
            // 使用indexOf
            function unique1(arr){
                var res=[]
                for(var i=0;i<arr.length;i++){
                    if(res.indexOf(arr[i])== -1){
                        res.push(arr[i])
                    }
                }
                return res
            }
            var res1=unique1(arr)
            console.log('res1',res1)
    
            // 利用indexOf检测元素在数组中第一次出现的位置是否和元素现在的位置相等
            function unique11(arr){
                return Array.prototype.filter.call(arr,function(item,index){
                    return arr.indexOf(item) === index
                })
            }
            var res11=unique11(arr)
            console.log('res11',res11)
            // ------------------------------------------------------------------------------------------
            //es6的Set数据结构不能重复
            function unique2(arr){
                console.log('111',new Set(arr))
                return [...new Set(arr)]
            }
            var res2=unique2(arr)
            console.log('res2',res2)
    
            function unique3(arr){
                return Array.from(new Set(arr))
            }
            var res3=unique3(arr)
            console.log('res3',res3)
    
            // ------------------------------------------------------------------------------------------
            // 再利用一个中间对象,利用对象属性存在的特性,没有的话就存入数组
            function unique4(arr){
               var o={},res=[];
               for(var i=0;i<arr.length;i++){
                   if(!o[arr[i]]){
                       o[arr[i]]=1
                       res.push(arr[i])
                   }
               }
               console.log(o)
               return res
            }
            var res4=unique4(arr)
            console.log('res4',res4)
    
            // ------------------------------------------------------------------------------------------
            // 数组对象去重
            // 第一种:根据某一个属性看,有重复的,就去掉
            var points = [{
                    lat: 22.687,
                    lng: 114.014
                }, {
                    lat: 22.687,
                    lng: 112.004
                }, {
                    lat: 22.837,
                    lng: 114.014
                },{
                    lat: 26.687,
                    lng: 115.014
                },{
                    lat: 22.687,
                    lng: 115.014
                },{
                    lat: 22.687,
                    lng: 114.014
                }];
            
                
                function arrUnique(arr){
                    var result=[],obj={};
                    for(var i=0;i<points.length;i++){
                        if(!obj[points[i].lat]){
                            result.push(points[i])
                            obj[points[i].lat]=1
                        }
                    }
                    return result
                }
                var result=arrUnique(points)
                console.log('result',result)
    
    
                function arrunique2(arr){
                    var obj={};
                    result = arr.reduce(function(item,next){
                        obj[next.lat]?'':obj[next.lat]=true&&item.push(next)
                        console.log('item',item)
                        console.log('next',next)
                        return item
                    },[])
                    return result
                }
                 var result2 = arrunique2(points)
                 console.log(result2)
    
    
            // 第二种:所有属性值相同,才认为相同,去掉
            var arrays = [{"id":1,"name":"李四1"},
                {"id":2,"name":"李四1"},
                {"id":2,"name":"李四"},
                {"id":1,"name":"李四1"},
                {"id":5,"name":"李四5"},
            ];
    
            function arrunique4(arr){
                var obj=[];
                result=arrays.reduce(function(item,next){
                    var str=JSON.stringify(next)
                    obj.indexOf(str)>-1?'':item.push(next)&&obj.push(str)
                    return item
                },[])
                return result
            }
            var arr4 = arrunique4(arrays)
            console.log('4444',arr4)
  • 相关阅读:
    VS2013 update4+Cocos2d-x 3.7 Win8下安装方法及配置
    它处资料:二分图最大匹配的匈牙利算法
    DataGuard备库ORA-01196故障恢复一则
    Leetcode41: Remove Duplicates from Sorted List
    BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发者工具 使用Napa开发SharePoint应用程序
    关于OC的内存管理-01
    P2002 消息扩散
    P1726 上白泽慧音
    2594 解药还是毒药
    P3385 【模板】负环
  • 原文地址:https://www.cnblogs.com/zhuMother/p/12201346.html
Copyright © 2011-2022 走看看