国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

還在寫(xiě)冗長(zhǎng)的 if else判斷在你的代碼中嗎?

Lorry_Lu / 3213人閱讀

摘要:語(yǔ)法可以是一個(gè)數(shù)組或者其他對(duì)象,其元素或?yàn)殒I值對(duì),或?yàn)閮蓚€(gè)元素的數(shù)組。每個(gè)鍵值對(duì)都會(huì)添加到新的。方法返回鍵對(duì)應(yīng)的值,如果不存在,則返回。返回一個(gè)布爾值,表示實(shí)例是否包含鍵對(duì)應(yīng)的值。

前言
今天無(wú)意間看到一篇文章(- -。忘記哪了..我大概說(shuō)一下吧,本來(lái)可以直接分享的...),對(duì)于平時(shí)冗長(zhǎng)的if else優(yōu)化. 平時(shí)也是這么處理的 通過(guò)object對(duì)象的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)優(yōu)雅的判斷條件書(shū)寫(xiě)! 但是看到通過(guò)map數(shù)據(jù)結(jié)構(gòu)的利用  感覺(jué)適用更廣,局限更低了 !一起來(lái)看看
首先對(duì)于Map數(shù)據(jù)結(jié)構(gòu)來(lái)做個(gè)簡(jiǎn)單介紹:

定義:

Map 對(duì)象保存鍵值對(duì)。任何值(對(duì)象或者原始值)  都可以作為一個(gè)鍵或一個(gè)值。

語(yǔ)法:

new Map([iterable]) Iterable 可以是一個(gè)數(shù)組或者其他 iterable 對(duì)象,其元素或?yàn)殒I值對(duì),或?yàn)閮蓚€(gè)元素的數(shù)組。 每個(gè)鍵值對(duì)都會(huì)添加到新的 Map。null 會(huì)被當(dāng)做 undefined

方法:

Map.prototype.get(key) 返回鍵對(duì)應(yīng)的值,如果不存在,則返回undefined
Map.prototype.has(key) 返回一個(gè)布爾值,表示Map實(shí)例是否包含鍵對(duì)應(yīng)的值。
Map.prototype.set(key, value) 設(shè)置Map對(duì)象中鍵的值。返回該Map對(duì)象。
對(duì)于Map數(shù)據(jù)結(jié)構(gòu)來(lái)說(shuō),不支持 = 號(hào)的賦值~~~~~~~

關(guān)于Map其他介紹API,**不多介紹了

正文
對(duì)于判斷條件的單一
        var status = 8;
        
        // 常用的if else 進(jìn)行 條件判斷來(lái)do somethings
        if(status == 1){
            console.log(111111)
        }else if(status == 2){
            console.log(222222)
        }else if(status == 3){
            console.log(333333)
        }else if(status == 4){
            console.log(444444)
        }else if(status == 5){
            console.log(555555)
        }else{
            console.log(status)
        }                      // 8
        
        
        // switch case的寫(xiě)法 相比if else 是有一些優(yōu)化了!
        switch (status){
            case 1:
            console.log(status)
            break
            case 2:
            console.log(status)
            break
            case 3:
            console.log(status)
            break
            case 4:
            console.log(status)
            break
            case 5:
            console.log(status)
            break
            default:
            console.log(status)
            break;
        }                            // 8
        
        // 對(duì)象object 數(shù)據(jù)結(jié)構(gòu)的寫(xiě)法  簡(jiǎn)潔了
        var obj = {
            "1":"11111",
            "2":"22222",
            "3":"33333",
            "4":"44444",
            "5":"55555",
        }
        console.log(obj[status] || status)   // 8
        
        // Map數(shù)據(jù)結(jié)構(gòu)的寫(xiě)法    和object差不多
        var mMap = new Map([
            ["1","11111"],
            ["2","22222"],
            ["3","33333"],
            ["4","44444"],
            ["5","55555"]
        ])
        console.log(mMap.get(status) || status)  // 8
        
結(jié)果都可以達(dá)到預(yù)期的效果! 判斷進(jìn)行的順利 ! 然而條件是個(gè)多個(gè)條件呢? 范圍呢? 條件是個(gè)運(yùn)算呢? 怎么實(shí)現(xiàn)? 接著看
       var name = "lisi" , status = 1;
       //if else 寫(xiě)法
       
        if(name == "lisi"){
            if(status == 1){
                console.log("lisi1")
            }else if(status == 2){
                console.log("lisi2")
            }else if(status == 3){
                console.log("lisi3")
            }else if(status == 4){
                console.log("lisi4")
            }else if(status == 5){
                console.log("lisi5")
            }else{
                console.log(status)
            }
        }else if(name == "zhangsan"){
            if(status == 1){
                console.log("zhangsan1")
            }else if(status == 2){
                console.log("zhangsan2")
            }else if(status == 3){
                console.log("zhangsan3")
            }else if(status == 4){
                console.log("zhangsan4")
            }else if(status == 5){
                console.log("zhangsan5")
            }else{
                console.log(status)
            }
        }                                               //lisi1
        
        //swtich case 寫(xiě)法
        switch (status && name){
            case 1 && "lisi":
            console.log(name + status)
            break
            ...
            default:
            console.log(status)
            break;
        }                                               //lisi1
        
        // 對(duì)象數(shù)據(jù)結(jié)構(gòu)的寫(xiě)法    //簡(jiǎn)潔
        var obj = {
            "lisi_1":"lisi1",
            "lisi_2":"lisi2",
            ...
            "zhangsan_5":"zhangsan5",
        } 
        console.log(obj[name + "_" + status] || status)   // lisi1
        
        // Map數(shù)據(jù)結(jié)構(gòu)的寫(xiě)法    和object差不多
        var mMap = new Map([
            ["lisi_1","lisi1"],
            ["lisi_2","lisi2"],
            ...
            ["zhangsan_5","zhangsan5"]
        ])
        console.log(mMap.get(name + "_" +status) || status)  //lisi1
        
多個(gè)條件也進(jìn)行了對(duì)比,都可以完美實(shí)現(xiàn),書(shū)寫(xiě)上相對(duì)于來(lái)說(shuō)更為簡(jiǎn)潔 當(dāng)然可讀性較低一點(diǎn).. 性能差異肯定也存在. 不過(guò)對(duì)于平日的基礎(chǔ)業(yè)務(wù)可以忽略不計(jì).接下來(lái)對(duì)于運(yùn)算,范圍Map來(lái)實(shí)現(xiàn)一下 來(lái)了解一下~
        var mMap = new Map([
            [162,function(h,a){console.log("he height is" + h + " ,he age is" + a)}],
            [174,function(h,a){console.log("he height is" + h + " ,he age is" + a)}],
            [198,function(h,a){console.log("he height is" + h + " ,he age is" + a)}],
        ]) 
        var height = 150, age = 12;
        mMap.get(height  + age)(height,age)  //he height is150 ,he age is12
        
        //正則
        var mMap = new Map([
            [/^d{2,5}$/,function(h,a){console.log("位數(shù)大于2且小于5")}],
            [/^d{5,10}$/,function(h,a){console.log("位數(shù)大于5且小于10")}],
        ]) 
        var arr = [...mMap].filter(([k,v])=>(k.test(`123`)))
        arr.forEach(([k,v])=>v.call(this))    //位數(shù)大于2且小于5
        
        
        
Map結(jié)構(gòu)是支持任何對(duì)象任何原始值作為key|value的,所以你們可以開(kāi)動(dòng)大腦再試試其它,我就不介紹了.明白這樣寫(xiě)就好, 當(dāng)然可以適當(dāng)封裝,但是這個(gè)業(yè)務(wù)代碼耦合性略高,封裝意義不大,此處就不做說(shuō)明了!
最后
有小伙伴看過(guò)那篇的可以評(píng)論區(qū)貼一下,(那篇文章篇幅比我長(zhǎng)...比我肯定全一些..)我只是簡(jiǎn)單的介紹了一下.平日都這么用.分享給大家.
關(guān)于webpack后續(xù)的文章 周一見(jiàn) !

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/99075.html

相關(guān)文章

  • python---異常處理

    摘要:總結(jié)判斷式的異常處理只能針對(duì)某一段代碼,對(duì)于不同的代碼段的相同類(lèi)型的錯(cuò)誤你需要寫(xiě)重復(fù)的來(lái)進(jìn)行處理。提示是基于文件句柄而存在的,因而只能在拋出異常后才可以執(zhí)行異常類(lèi)只能用來(lái)處理指定的異常情況,如果非指定異常則無(wú)法處理。 異常和錯(cuò)誤 程序中難免出現(xiàn)錯(cuò)誤,而錯(cuò)誤分成兩種 1.語(yǔ)法錯(cuò)誤(這種錯(cuò)誤,根本過(guò)不了python解釋器的語(yǔ)法檢測(cè),必須在程序執(zhí)行前就改正) #語(yǔ)法錯(cuò)誤示范一 if #語(yǔ)法...

    Alfred 評(píng)論0 收藏0
  • 編寫(xiě)小而美函數(shù)藝術(shù)

    摘要:函數(shù)需要小要避免編寫(xiě)職責(zé)冗雜的龐大函數(shù),而需要將它們分離成很多小函數(shù)。另一方面小而能夠自解釋的函數(shù)讀起來(lái)也會(huì)讓人愉悅,方便開(kāi)展之后的工作。最終我們最初的龐大函數(shù)被拆分成下面這些函數(shù)在中嘗試這就是編寫(xiě)小而美的函數(shù)的藝術(shù)。 原文鏈接:https://dmitripavlutin.com/th...譯者:阿里云-也樹(shù) 隨著軟件應(yīng)用的復(fù)雜度不斷上升,為了確保應(yīng)用穩(wěn)定且易拓展,代碼質(zhì)量就變的越來(lái)...

    Neilyo 評(píng)論0 收藏0
  • 如何提升你javascript代碼逼格之簡(jiǎn)寫(xiě)篇

    摘要:例如可以簡(jiǎn)寫(xiě)為簡(jiǎn)寫(xiě)賦值方法如果你正在使用任何流行的框架,那么你很有可能使用數(shù)組或以對(duì)象本文的形式將數(shù)據(jù)在組件和之間進(jìn)行通信。可以簡(jiǎn)寫(xiě)為以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助 三元運(yùn)算符 當(dāng)你想用一行代碼來(lái)寫(xiě)if...else語(yǔ)句的時(shí)候,使用三元操作符是非常好的選擇,例如: const x = 20; let answer; if (x > 10...

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

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

0條評(píng)論

閱讀需要支付1元查看
<