复杂类型 基本类型 万能去重

<script>
    const removeRepeatObj = (arr) => {
        for(let i=0,len = arr.length;i<len;i++){
            if(typeof arr[i]==='object' && Array.isArray(arr[i])==0 && arr[i] !== null){
                arr[i] = JSON.stringify(arr[i]);
            }else{}
        }
        console.log(arr);  //test
        //基本类型的去重
        var res = [];
        for(var i=0; i<arr.length; i++) {
            if(arr.indexOf(arr[i]) == i) {
                res.push(arr[i]);
            }
        }
        //处理对象
        console.log(res);//test
        for(let j=0;j<res.length;j++){
            if(typeof res[j] === 'string' && res[j].indexOf('{')!==-1){
                res[j] = JSON.parse(res[j]);
            }
        }
        return res;
    }
  /*  removeRepeatObj([{a:1},{a:1},{a:1,b:2},[1,2,3],[1,2,3],[1,2],[1,{a:2}],[1,{a:2}],3,3,'4',4])*/
方法一 
  /*  function unique(arr) {
        var hash = {};
        return arr.filter(function (element) {
            var key = JSON.stringify(element);
            console.log(hash)
            return hash[key]?false:(hash[key] = true)
            //return hash.hasOwnProperty(key)?false:(hash[key] = true)
            //return Object.keys(hash).includes(key)?false:(hash[key] = true)
        });
    }*/
// console.log(unique([{a:1},{a:1},{a:1,b:2},[1,2,3],[1,2,3],[1,2],[1,{a:2}],[1,{a:2}],3,3,'4']))
/*var obj={a:1,b:2,c:3}
var  ar=Object.keys(obj)
    console.log(!undefined)*/
   //console.log(ar.includes('a'))

方法二
    function unique(arr) {
        var ret = [];
        var tmp = {};
        for(var i=0; i<arr.length; i++){
            if(!tmp[JSON.stringify(arr[i])]){
                tmp[JSON.stringify(arr[i])] = 1;
                ret.push(arr[i]);
            }
        }
        console.log(ret)
    }
    unique( [{a:1},{a:1},{a:1,b:2},[1,2,3],[1,2,3],[1,2],[1,{a:2}],[1,{a:2}],3,3,'4'])
   </script>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值