js判断是不是空对象

xiaoxiao2021-02-28  132

1.如何判断一个对象是空对象

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 } }

空对象的呈现是var obj = {}

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; }

解决思路

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

性能比较

下面测试一下两个方法的性能比较

第一种在a就是一个空对象的情况下,在Imac谷歌浏览器上平均耗时在0.012ms左右

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

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

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

转载请注明原文地址: https://www.6miu.com/read-24114.html

最新回复(0)