react使用new Map完成多个if条件判断的优化

作者分享了工作中遇到的大量if-else条件判断代码,并寻求更简洁的解决方案,提出使用新Map进行代码重构,减少代码复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前在工作中遇到的代码,是之前的同事写的,写了差不多一百行if  else ,,,,

看的我真是头疼欲裂,今天下决心改一下,

但是感觉这样还是很鸡肋,不知道大家有没有什么更好的方案,烦请留言,switch case除外

 //原始代码,这里只是举个例子
        const depCode = cookie.load('depCode');
        //这里可能有很多判断条件
          if (depCode == '0001') {
            window.open('http://baidu.com');
        } else if (depCode == '0002' || depCode == '0003' || depCode == '9639' || depCode == '8465') {
            window.open('http://taobao.com');
        } else if (depCode == '0004' || depCode == '0005' || depCode == '00006' || depCode == '7458' || depCode == '1254') {
            window.open('http://jingdong.com');
        } else if (depCode == '0007') {
            window.open('http://youzheng.com');
        } else if (depCode == '0008') {
            window.open('http://csdn.com');
        } else {
            setModal(true);//antd Modal的显示
        }

        //使用new Map去完成条件判断,感觉这样还是很繁琐
        const optimization = (code, token, setModal) => {
            const depCodeArr1 = ['0001'];
            const depCodeArr2 = ['0002', '0003', '9639', '8465'];
            const depCodeArr3 = ['0004', '0005', '00006', '7458', '1254'];
            const depCodeArr4 = ['0007'];
            const depCodeArr5 = ['0008'];

            const mjMap = new Map()
                .set(deptCodeArr1.includes(code) ? code : '', 'http://baidu.com')
                .set(depCodeArr2.includes(code) ? code : '', 'http://taobao.com')
                .set(depCodeArr3.includes(code) ? code : '', 'http://jingdong.com')
                .set(depCodeArr4.includes(code) ? code : '', 'http://youzheng.com')
                .set(depCodeArr5.includes(code) ? code : '', 'http://csdn.com')
            const isMjMapCode = mjMap.get(code);
            return isMjMapCode && window.open(isMjMapCode) || setModal(true);
        }


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值