if else 太多?代码优化小技巧

1、简单分支优化

实际项目中,我们可能遇到这样的代码:

if (appealType === '1') {
    appealTypeName = '咨询类'
} else if (appealType === '2') {
    appealTypeName = '求助类'
} else if (appealType === '3') {
    appealTypeName = '建议类'
} else if (appealType === '4') {
    appealTypeName = '投诉类'
} else if (appealType === '5') {
    appealTypeName = '表扬类'
} else if (appealType === '6') {
    appealTypeName = '骚扰类'
} else {
    appealTypeName = '通用类'
}

这么一看,感觉没什么异常,但是如果有100个条件判断?按照这种写法,要写100个if分支?

优化上面代码结构:

function getAppealTypeName(type) {
    const appealTypeNameMap = {
       1: ()=> appealTypeName = '咨询类',
       2: ()=> appealTypeName = '求助类',
       3: ()=> appealTypeName = '建议类',
       4: ()=> appealTypeName = '投诉类',
       5: ()=> appealTypeName = '表扬类',
       6: ()=> appealTypeName = '骚扰类',
    };
    appealTypeNameMap[type] ? appealTypeNameMap[type]() : appealTypeName = '骚扰类';
}

2、复杂分支优化

如果遇到如下的复杂判断,应该如何优化

function getAppealTypeName(name) {
    if (name.length > 4) {
        appealTypeName = '咨询类'
    } else if (name.length < 2) {
        appealTypeName = '求助类'
    } else if (name[0] === '建议') {
        appealTypeName = '建议类'
    } else if (name[0] === '投诉' && name[0] !== '建议类') {
        appealTypeName = '投诉类'
    } else if (name === 'good') {
        appealTypeName = '表扬类'
    } else if (name[1] === 'bad' && name[1].dec === '骚乱') {
        appealTypeName = '搔痒类'
    } else {
        appealTypeName = '通用类'
    }
}

 引入二维数组来进行分支优化

function getAppealTypeName(name) {
    const appealTypeNameMap = [
        [
            (name) => name.length > 4,
            () => appealTypeName = '咨询类'
        ],
        [
            (name) => name.length < 2,
            () => appealTypeName = '求助类'
        ],
        [
            (name) => name[0] === '建议',
            () => appealTypeName = '建议类'
        ],
        [
            (name) => name[0] === '投诉' && name[0] !== '建议类',
            () => appealTypeName = '投诉类'
        ],
        [
            (name) => name === 'good',
            () => appealTypeName = '表扬类'
        ],
        [
            (name) => name[1] === 'bad' && name[1].dec === '骚乱',
            () => appealTypeName = '搔痒类'
        ]
    ]
    // 获取符合条件的子数组
    const getAppealType = appealTypeNameMap.find((item) => item[0](name));
    // 子数组存在则运行子数组中的第二个元素(执行函数)
    getAppealType ? appealTypeName = getAppealType[1]() : appealTypeName = '通用类';
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值