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

之前在工作中遇到的代码,是之前的同事写的,写了差不多一百行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);
        }


你可能感兴趣的:(javascript,react.js,html5)