美文网首页
js判断是不是空对象

js判断是不是空对象

作者: Miss_Fairy | 来源:发表于2017-07-27 15:29 被阅读0次

    1.转换成字符串进行比较

    function IsNullObj(obj){
        if(JSON.stringify(obj) === "{}"){
            console.log("true");
        }else{
            console.log("false");
        }
    }
    
    image.png

    2.利用for in 原理判断是否有key值

    function IsNull(obj){  
        if(obj instanceof Array){  
            console.log('是数组')  
        }  
        else if(obj == undefined){  
            console.log('是undefined')  
        }  
        else if(obj == ''){  
            console.log('字符串')  
        }  
        else if(obj == null){  
            console.log('是null')  
        }  
        else{  
            for(var i in obj){  
                return false  
            }  
            return true  
        }  
    }  
    
    image.png
    function IsEmptyObject(obj){
              if(!obj || typeof obj != 'object' || Array.isArray(obj)){
                return false;
              }
                //第一种
                //测试性能段
                /*
                console.time('first');
                if(JSON.stringify(obj) === '{}'){
                    console.timeEnd ('first');
                    return true
                }else{
                    console.timeEnd ('first');
                    return false;
                }
                */
                return (JSON.stringify(obj) === '{}')
                //第二种
                console.time('second');
                for(var key in obj){
                    console.timeEnd ('second');
                    return false 
                }
                console.timeEnd ('second');
                return true;
        }
    

    1.解决思路

    第一种就是粗暴的直接转字符串,然后强行比较第二种就是利用for in的原理,然后一旦进了循环,说明有key值,那直接false啦,否则就是空对象

    2.性能比较

    下面测试一下两个方法的性能比较第一种在a就是一个空对象的情况下,在Imac谷歌浏览器上平均耗时在0.012ms左右
    第二种在a就是一个空对象的情况下,在Imac谷歌浏览器上平均耗时在0.007ms左右,性能差距为两倍

    第一种在a是一个普通对象的情况下,豆瓣的api对象,在Imac谷歌浏览器上平均耗时在0.08ms左右

    第二种在a是一个普通对象的情况下,豆瓣的api对象,在Imac谷歌浏览器上,第一次稍慢,0.02ms,平均耗时在0.0075ms左右,性能差距随着对象越大,差距也会越大

    相关文章

      网友评论

          本文标题: js判断是不是空对象

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