zoukankan      html  css  js  c++  java
  • 表驱动法(解决复杂的if判断)

    描述: 取值是0~6,含义分别是周一到周日,编写函数进行转换。

    function dayToWeek(day) {
        let res = ''
        if (day === 0) {
            res = '周一'
        } else if (day === 1) {
            res = '周二'
        } else if (day === 2) {
            res = '周三'
        } else if (day === 3) {
            res = '周四'
        } else if (day === 4) {
            res = '周五'
        } else if (day === 5) {
            res = '周六'
        } else if (day === 6) {
            res = '周日'
        }
    return res }

    上述代码很啰嗦。先用switch改写一下

    function dayToWeek(day) {
        switch(day) {
            case 0: return '周一'
            case 1: return '周二'
            case 2: return '周三'
            case 3: return '周四'
            case 4: return '周五'
            case 5: return '周六'
            case 6: return '周日'
        }
    }

    emmm.....好一点了。有没有更好的写法?--------->表驱动法正式上线

    function dayToWeek(day) {
         const weekArr = ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
         return weekArr[day]
    }

    能否再进一步优化呢?

    const dayToWeek = day => '周' + ('一二三四五六日'[day] || throwError('错误的传参'))

    使用场景拓展1(非线性数据): 数组---->对象

    • 例如:前端调用接口,如果报错,需要根据字段值 给用户以提示。如果使用if switch等判断, 代码略冗余。而表驱动法则就像下面这样简洁, 传入字段值则得到提示信息
    const codeObj = {
        code_1001: 'XXX数据范围不对',
        code_1002: 'XXX必须是整数',
        code_1003: '请输入一个不重复的XXX',
        code_1004: 'XXX和YYY不匹配, 请重新输入',
        code_1005: 'XXX...'
    }
    function codeToInfo(val){
        return codeObj[val]
    }

    使用场景拓展2(阶梯访问表:范围判断) 

    •  例如:学生成绩, 低于59分为'F', 低于79为'E', 低于84分为'D', 以此类推。  依赖于键值对, 但键、值要放在不同数组中
    const grade = [59, 79, 84, 89, 94, 100] 
    const level = ['F', 'E', 'D', 'C', 'B', 'A']
    function getLevel(val){ // 使用for in相比于forEach等遍历方式,好处是可提前跳出循环
        for(let i in grade) {
            if(val < grade[i]) {
                return level[i]
            }
        }
    }
  • 相关阅读:
    jQuery 折叠,自动完成,小提示,树,验证插件(bassistance.de)
    多样化的连结提示效果(Tips)
    Ext开源 Extjs2.0 人力资源管理(ASP.NET)
    JavaScript面向对象编程
    访问Ext.data.store的数据
    Ext核心代码分析之Function.createDelegate
    支持firefox的省略符
    Ext 2.0下Jquery的整合使用示例
    多样化的垂直菜单(OUTLOOK菜单)
    使用 jQuery 简化 Ajax 开发
  • 原文地址:https://www.cnblogs.com/jxjl/p/12725383.html
Copyright © 2011-2022 走看看