美文网首页
逻辑判断代码优化

逻辑判断代码优化

作者: 感觉不错哦 | 来源:发表于2019-07-18 10:27 被阅读0次
    逻辑判断是所有语言的必经之路,别的不说,WEB的兼容处理的逻辑是真的多,如何优化这些逻辑也是一门学问,接下来走一遍我理想中的优化 初学-->入门-->中级(o(╥﹏╥)o高级真的不会)

    我想入门的小伙伴肯定写过判断今天是星期几的逻辑判断,就以此为例,我们慢慢升级

        function returnWeekDay(){
            var string='今天是星期'
            var day=new Date().getDay()
            if(date===0){
                string+='日'
            }
            if(date===1){
                string+='一'
            }
            if(date===2){
                string+='二'
            }
            if(date===3){
                string+='三'
            }
            if(date===4){
                string+='四'
            }
            if(date===5){
                string+='五'
            }
            if(date===6){
                string+='六'
            }
            return string
        }
    

    switch也是一样的,就不写了,这是绝大多数新手的判断逻辑。然而有一天相关组织发现,星象有变,每周变成8天(产品的邪恶你是无法想象的),或者逻辑需求增多,需要逻辑判断做出更多的判断,这显然是不好的

        function returnWeekDay(){
            var string='今天是星期'
            var day=new Date().getDay()
            var dateArr=['天','一','二','三','四','五','六']
            return string+dateArr[day]
        }
    

    考虑到结果只有7个,并且date对象返回的num也只有7个,很容易的利用数组进行判断

    当然这是在有序的情况,无序如何操作呢,也很简单

        function returnWeekDay(){
            var string='今天是星期'
            var day=new Date().getDay()
            dateObj={
                0:'天',
                1:'一',
                2:'二',
                3:'三',
                4:'四',
                5:'五',
                6:'六',
            }
            return string+dateObj[day]
        }
    

        function returnWeekDay(){
            var string='今天是星期'
            var day=new Date().getDay()
            var dateObj={}
            for(var i=0;i<7;i++){
                dateObj[i]=i
            }
            return  dateObj
        }
    

    其实这样也可以啊,只需要对value做一些判断即可,比如写一个方法100以内的数学num转换语文num

        function numChar(num){
            var lang = ['','一','二','三','四','五','六','七','八','九','十'];
            var text = '';
            var a = parseInt( num / 10 );
            var b = num % 10;
            if(a > 1){
                text = lang[a]+lang[10]+lang[b];
            }else if(a == 1){
                text = lang[10]+lang[b];
            }else{
                text = lang[b];
            }
            return text;
        }
    

    然后再结合一下上面的 对0判断为7,那么对于逻辑来说总是更严谨的

       function returnWeekDay(){
            var string='今天是星期'
            return  string+'日一二三四五六'.charAt(new Date().getDay())
        }
    

    这时候你的产品来挑事了,加个工休判断

        function returnWeekDay(){
            var string='今天是星期'
            var day=new Date().getDay()
            dateObj={
                0:['天','休'],
                1:['一','工'],
                2:['二','工'],
                3:['三','工'],
                4:['四','工'],
                5:['五','工'],
                6:['六','休'],
            }
            dataType={
                '休':function(){
                    console.log('今天休息哦!')
                },
                '工':function(){
                    console.log('今天也要努力工作哦!')
                }
            }
            var returnData={
                'string':string+dateObj[day][0],
                'method':dataType[dateObj[day][1]]
            }
            return returnData
        }
    
    三元运算符 适合简单的if(){}else{}
              function num(a){
                  if(typeof a=='number'){
    
                  }else{
    
                  }
              }       
    
              function num(a){
                  a=typeof a=='number'?a:b
              }  
    

    b就相当于else

    if(flag){
        someMtehod()
    }
    //可以这样写
    flag&&someMtehod()
    
    if(d==a||d==b||d==c){
        someMethod()
    }
    if([a,b,c].includes(d)){
        someMethod()
    }

    相关文章

      网友评论

          本文标题:逻辑判断代码优化

          本文链接:https://www.haomeiwen.com/subject/rkkklctx.html