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

資訊專欄INFORMATION COLUMN

還在寫冗長的 if else判斷在你的代碼中嗎?

Lorry_Lu / 3219人閱讀

摘要:語法可以是一個數組或者其他對象,其元素或為鍵值對,或為兩個元素的數組。每個鍵值對都會添加到新的。方法返回鍵對應的值,如果不存在,則返回。返回一個布爾值,表示實例是否包含鍵對應的值。

前言
今天無意間看到一篇文章(- -。忘記哪了..我大概說一下吧,本來可以直接分享的...),對于平時冗長的if else優化. 平時也是這么處理的 通過object對象的數據結構來實現優雅的判斷條件書寫! 但是看到通過map數據結構的利用  感覺適用更廣,局限更低了 !一起來看看
首先對于Map數據結構來做個簡單介紹:

定義:

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

語法:

new Map([iterable]) Iterable 可以是一個數組或者其他 iterable 對象,其元素或為鍵值對,或為兩個元素的數組。 每個鍵值對都會添加到新的 Mapnull 會被當做 undefined

方法:

Map.prototype.get(key) 返回鍵對應的值,如果不存在,則返回undefined
Map.prototype.has(key) 返回一個布爾值,表示Map實例是否包含鍵對應的值。
Map.prototype.set(key, value) 設置Map對象中鍵的值。返回該Map對象。
對于Map數據結構來說,不支持 = 號的賦值~~~~~~~

關于Map其他介紹API,**不多介紹了

正文
對于判斷條件的單一
        var status = 8;
        
        // 常用的if else 進行 條件判斷來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的寫法 相比if else 是有一些優化了!
        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
        
        // 對象object 數據結構的寫法  簡潔了
        var obj = {
            "1":"11111",
            "2":"22222",
            "3":"33333",
            "4":"44444",
            "5":"55555",
        }
        console.log(obj[status] || status)   // 8
        
        // Map數據結構的寫法    和object差不多
        var mMap = new Map([
            ["1","11111"],
            ["2","22222"],
            ["3","33333"],
            ["4","44444"],
            ["5","55555"]
        ])
        console.log(mMap.get(status) || status)  // 8
        
結果都可以達到預期的效果! 判斷進行的順利 ! 然而條件是個多個條件呢? 范圍呢? 條件是個運算呢? 怎么實現? 接著看
       var name = "lisi" , status = 1;
       //if else 寫法
       
        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 寫法
        switch (status && name){
            case 1 && "lisi":
            console.log(name + status)
            break
            ...
            default:
            console.log(status)
            break;
        }                                               //lisi1
        
        // 對象數據結構的寫法    //簡潔
        var obj = {
            "lisi_1":"lisi1",
            "lisi_2":"lisi2",
            ...
            "zhangsan_5":"zhangsan5",
        } 
        console.log(obj[name + "_" + status] || status)   // lisi1
        
        // Map數據結構的寫法    和object差不多
        var mMap = new Map([
            ["lisi_1","lisi1"],
            ["lisi_2","lisi2"],
            ...
            ["zhangsan_5","zhangsan5"]
        ])
        console.log(mMap.get(name + "_" +status) || status)  //lisi1
        
多個條件也進行了對比,都可以完美實現,書寫上相對于來說更為簡潔 當然可讀性較低一點.. 性能差異肯定也存在. 不過對于平日的基礎業務可以忽略不計.接下來對于運算,范圍Map來實現一下 來了解一下~
        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("位數大于2且小于5")}],
            [/^d{5,10}$/,function(h,a){console.log("位數大于5且小于10")}],
        ]) 
        var arr = [...mMap].filter(([k,v])=>(k.test(`123`)))
        arr.forEach(([k,v])=>v.call(this))    //位數大于2且小于5
        
        
        
Map結構是支持任何對象任何原始值作為key|value的,所以你們可以開動大腦再試試其它,我就不介紹了.明白這樣寫就好, 當然可以適當封裝,但是這個業務代碼耦合性略高,封裝意義不大,此處就不做說明了!
最后
有小伙伴看過那篇的可以評論區貼一下,(那篇文章篇幅比我長...比我肯定全一些..)我只是簡單的介紹了一下.平日都這么用.分享給大家.
關于webpack后續的文章 周一見 !

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/99075.html

相關文章

  • python---異常處理

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

    Alfred 評論0 收藏0
  • 編寫小而美函數藝術

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

    Neilyo 評論0 收藏0
  • 如何提升你javascript代碼逼格之簡寫篇

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

    FuisonDesign 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<