亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

判斷一個(gè)對(duì)象是一個(gè)空對(duì)象的解決方案

neu / 3183人閱讀

摘要:這種情況如果在日常使用的時(shí)候是可以使用第一種的,如果需要大數(shù)據(jù)交互中僅僅是某一個(gè)判斷的話(huà),還是用第二種吧,畢竟涉及到循環(huán),性能差距還是很大的思考既然用到了,那么如何使用呢,兼容性如何呢,如何自己實(shí)現(xiàn)一個(gè)呢

如何判斷一個(gè)對(duì)象是一個(gè)空對(duì)象(不帶繼承的原型屬性,如果帶的話(huà)只能用for in)

空對(duì)象的呈現(xiàn)是var obj = {}

    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;
            //第三種
            
            return (Object.keys(obj).length === 0)
    }
解決思路

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

性能比較

下面測(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ì)越大

總結(jié)。
這種情況如果在日常使用的時(shí)候是可以使用第一種的,如果需要大數(shù)據(jù)交互中僅僅是某一個(gè)判斷的話(huà),還是用第二種吧,畢竟涉及到循環(huán),性能差距還是很大的
思考

既然用到了JSON.stringify,那么JSON.stringfy/parse如何使用呢,兼容性如何呢,如何自己實(shí)現(xiàn)一個(gè)呢

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/83371.html

相關(guān)文章

  • js基礎(chǔ)(一):判斷類(lèi)型

    摘要:注意類(lèi)繼承時(shí)的問(wèn)題繼承自方法中對(duì)象直接繼承和間接繼承的都會(huì)報(bào)解決的問(wèn)題通常是讓對(duì)象的手動(dòng)指向自己將自己的類(lèi)賦值給對(duì)象的屬性基類(lèi)不會(huì)報(bào)了原博參考,,,,判斷為 js基礎(chǔ)(二):構(gòu)造函數(shù)與原型 一、常見(jiàn)實(shí)例 判斷是否為對(duì)象 let obj = {} // 1.Object.prototype.toString if (Object.prototype.toString.call(obj...

    hightopo 評(píng)論0 收藏0
  • 關(guān)于JSON.parse()和JSON.stringify()性能小測(cè)試

    摘要:我們一般用來(lái)深拷貝,其過(guò)程說(shuō)白了,就是利用將對(duì)象序列化字符串,再使用來(lái)反序列化還原對(duì)象。至于這行代碼為什么能實(shí)現(xiàn)深拷貝,以及它有什么局限性等等,不是本文要介紹的。小結(jié)論能不用和就不用,采用替代方案且性能更優(yōu)的。 JSON.parse(JSON.stringify(obj))我們一般用來(lái)深拷貝,其過(guò)程說(shuō)白了,就是利用 JSON.stringify 將js對(duì)象序列化(JSON字符串),再使...

    oogh 評(píng)論0 收藏0
  • <<編寫(xiě)可維護(hù)javascript>> 筆記8(避免'比較&#

    摘要:中常常會(huì)看到這種代碼變量與的比較這種用法很有問(wèn)題用來(lái)判斷變量是否被賦予了一個(gè)合理的值比如不好的寫(xiě)法執(zhí)行一些邏輯這段代碼中方法顯然是希望是一個(gè)數(shù)組因?yàn)槲覀兛吹降膿碛泻瓦@段代碼的意圖非常明顯如果參數(shù)不是一個(gè)數(shù)組則停止接下來(lái)的操作這種寫(xiě)法的問(wèn)題在 js中, 常常會(huì)看到這種代碼: 變量與null的比較(這種用法很有問(wèn)題), 用來(lái)判斷變量是否被賦予了一個(gè)合理的值. 比如: const Contr...

    young.li 評(píng)論0 收藏0
  • 別再寫(xiě) bug 了,避免指針 5 個(gè)案例!

    摘要:本文,棧長(zhǎng)將帶你了解什么是空指針,還有如何有效的避免空指針。如何避免空指針下面說(shuō)幾個(gè)空指針的幾個(gè)最常見(jiàn)的案例及解決之道。字符串比較,常量放前面這個(gè)時(shí)候可能為造成空指針異常,應(yīng)該把常量放前面,就能避免空指針異常。 空指針是我們 Java 開(kāi)發(fā)人員經(jīng)常遇到的一個(gè)基本異常,這是一個(gè)極其普遍但似乎又無(wú)法根治的問(wèn)題。 本文,棧長(zhǎng)將帶你了解什么是空指針,還有如何有效的避免空指針。 什么是空指針? ...

    zzzmh 評(píng)論0 收藏0
  • JavaScript系列--類(lèi)型判斷4種基本方法,研究jquerytype方法,對(duì)象檢測(cè)方法

    摘要:用對(duì)象字面量創(chuàng)建的對(duì)象會(huì)報(bào)錯(cuò),使用構(gòu)造函數(shù)創(chuàng)建的對(duì)象屬于。發(fā)現(xiàn),構(gòu)造函數(shù)創(chuàng)建的,,,,。從原型鏈角度講,構(gòu)造函數(shù)就是新對(duì)象的的類(lèi)型。 一、前言 類(lèi)型判斷有時(shí)候真的頭疼,但是一旦熟練使用就會(huì)覺(jué)得不過(guò)如此。初級(jí)的,會(huì)判斷數(shù)字和字符串。中級(jí)的,會(huì)判斷數(shù)組和對(duì)象。進(jìn)階的,會(huì)判斷日期,正則,錯(cuò)誤類(lèi)型。高級(jí)的,會(huì)判斷plainObject,空對(duì)象,window對(duì)象等等。 基本類(lèi)型:String、N...

    lavor 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

neu

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<