js判斷是不是空對(duì)象

1.轉(zhuǎn)換成字符串進(jìn)行比較

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('是數(shù)組')  
    }  
    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;
          }
            //第一種
            //測(cè)試性能段
            /*
            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.解決思路

第一種就是粗暴的直接轉(zhuǎn)字符串,然后強(qiáng)行比較第二種就是利用for in的原理,然后一旦進(jìn)了循環(huán),說明有key值,那直接false啦,否則就是空對(duì)象

2.性能比較

下面測(cè)試一下兩個(gè)方法的性能比較第一種在a就是一個(gè)空對(duì)象的情況下,在Imac谷歌瀏覽器上平均耗時(shí)在0.012ms左右
第二種在a就是一個(gè)空對(duì)象的情況下,在Imac谷歌瀏覽器上平均耗時(shí)在0.007ms左右,性能差距為兩倍

第一種在a是一個(gè)普通對(duì)象的情況下,豆瓣的api對(duì)象,在Imac谷歌瀏覽器上平均耗時(shí)在0.08ms左右

第二種在a是一個(gè)普通對(duì)象的情況下,豆瓣的api對(duì)象,在Imac谷歌瀏覽器上,第一次稍慢,0.02ms,平均耗時(shí)在0.0075ms左右,性能差距隨著對(duì)象越大,差距也會(huì)越大

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,979評(píng)論 25 709
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,122評(píng)論 1 92
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,649評(píng)論 18 399
  • 1.當(dāng)你的才華還撐不起你的夢(mèng)想時(shí)你惟一能做的就是多學(xué)習(xí),多讀書,多接交牛人?,F(xiàn)在我處于失業(yè)狀態(tài),不知道下一步該如何...
    學(xué)習(xí)與成長(zhǎng)杜彥龍閱讀 172評(píng)論 0 0
  • 終見丹桂溢暗香。 風(fēng)輕云淡處,共芳菲。 道是無意染秋寒。 誰曾想,此處解感傷。 天冷漸生涼, 心緒結(jié)寸腸,總惆悵!...
    逸塵居士閱讀 278評(píng)論 0 0

友情鏈接更多精彩內(nèi)容