js判断是不是空对象

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左右,性能差距随着对象越大,差距也会越大

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,368评论 25 708
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,805评论 1 92
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,766评论 18 399
  • 1.当你的才华还撑不起你的梦想时你惟一能做的就是多学习,多读书,多接交牛人。现在我处于失业状态,不知道下一步该如何...
    学习与成长杜彦龙阅读 154评论 0 0
  • 终见丹桂溢暗香。 风轻云淡处,共芳菲。 道是无意染秋寒。 谁曾想,此处解感伤。 天冷渐生凉, 心绪结寸肠,总惆怅!...
    逸塵居士阅读 265评论 0 0