美文网首页
javascript数组去重,数组对象去重

javascript数组去重,数组对象去重

作者: 威猫爱吃鱼 | 来源:发表于2019-12-12 14:29 被阅读0次

    利用Reduce去重

    function unique (arr) {

        var obj = {};

        arr = arr.reduce(function (item, next) {

            obj[next.id] ? '' : obj[next.id] = true && item.push(next);

            return item;

        }, []);

      return arr

    }

    利用ES6 Set去重(ES6中最常用)

    function unique (arr) {

        return Array.from(new Set(arr))

    }

    //  [...new Set(arr)]

    利用for嵌套for,然后splice去重(ES5中最常用)

    function unique(arr) {

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

            for(var j = i+1 ; j< arr.length; j++){

                if(arr[i] = arr[j]){

                    arr.splice(j,1);

                    j--;

                }

            }

        }

    }

    利用indexOf去重

    利用includes

    function unique(arr) {

        if(!Array.isArray(arr)){

            console.log('type error!')

            return 

        }    

        var array = []

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

            if( !array.indexOf(arr[i]) ===  -1 ) {

                array.push(arr[i])

            }

        }

        return array

    }

    利用filter

    function unique(arr) {

        return arr.filter((item,index,arr){

            return arr.indexOf(item, 0)  ===  index

        })

    }

    利用sort()

    function unique(arr) {

        if(!Array.isArray(arr)) {

            console.log('type error')

            return

        }

       arr = arr.sort()

       var array = [arr[0]]

        for (var i = 1; i < arr.length ; i++) {

            if(arr[i] !== arr[i-1]){

                array.push(arr[i])

            }

        }

        return array

    }

    //NaN、{}没有去重

    利用递归去重

    function unique(arr){

           var array= arr;

           var len = array.length;

            array.sort(function(a,b){   //排序后更加方便去重

               return a - b;

           })

            function loop(index){

               if(index >=1){

               if(array[index] === array[index-1]){

                    array.splice(index,1);

               }

               loop(index -1);    //递归loop,然后数组去重

              }

            }

           loop(len-1);

            return array;

    }

    利用hasOwnProperty

    function unique(arr) {

        var obj = {}

        return arr.filter(function(item, index, arr) {

            return obj.hasOwnProperty(typeod item + item) ? false : (obj[typeof item + item] = true)

        })

    }

    利用Map数据结构去重

    function arrayNonRepeatfy(arr){

        let map =newMap();

        let array =newArray();// 数组用于返回结果

        for(leti =0; i < arr.length; i++) {

            if(map.has(arr[i])) {

                // 如果有该key值

                map.set(arr[i],true);

             }else{ 

                 map.set(arr[i],false);// 如果没有该key值array .push(arr[i]); 

             }

         }

        return array ;

    }

    利用对象的属性不能相同的特点去重

    functionunique(arr){

        if(!Array.isArray(arr)) {

           console.log('type error!')

           return

        }

        var arrry= [];

         var  obj = {};

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

           if (!obj[arr[i]]) {

               arrry.push(arr[i])

               obj[arr[i]] =1

           } else {

               obj[arr[i]]++

           }

        }

        return arrry;

    }


    资料来源 https://segmentfault.com/a/1190000016418021?utm_source=tag-newest

    相关文章

      网友评论

          本文标题:javascript数组去重,数组对象去重

          本文链接:https://www.haomeiwen.com/subject/rpizgctx.html