多个if判断的代码如何优化

今天在群里看到了一个多if的代码,然后群友给出了几种不同的优化方式,故而在此记录一下

以上是需要优化的代码

方案一:

简单明了,将keyvalue拼接,然后通过独享去枚举,然后取type的值

方案二:

typeNum的多种值都罗列出来,然后再将该类型下的多种情况罗列出来,最后取值,在取值之前先判断了当前typeNum获取到的数据是否是对象,如果是就通过typeNumtypeValue一起取值,如果不是直接通过typeNum取值返回

方案三:

我自己书写的方式,可能不太好理解,主要是通过Object.values()Object.keys()实现,下面贴出代码

js 复制代码
let jieXiTypeMap = {
    1:{
        9: '采购入库',
        10: '采购退回'
    },
    2: 13,
    3:{
        11: '销售出库',
        12: '销售退货'
    },
    4: 14
}
function getJieXiType(typeNum,typeValue){
    if(typeValue){
        let typeValueArr = Object.values(jieXiTypeMap[typeNum]);
        let currentTypeArr = Object.keys(jieXiTypeMap[typeNum]);
        return currentTypeArr[typeValueArr?.indexOf(typeValue)] ? currentTypeArr[typeValueArr?.indexOf(typeValue)] : null
    }else{
        return jieXiTypeMap[typeNum] || null
    }
}
console.log("🚀  ### ~ getJieXiType(1):", getJieXiType(1,'测试'))

因为这里我不太想使用中文去定义key,然后写了这种可以放在公共uilts中的方式,上面这里的代码主要是通过获取对象的keyvalue来进行处理,如果有typeValue字段,就通过Object.keys()Object.values获取对象的keyvalue值,然后通过数组的indexOf获取当前typeValue所在下标,然后去Object.keys()数组中获取对应的jieXiType,如果没有typeValue数据则直接取枚举对象中的值

相关推荐
Yvonne爱编码7 分钟前
AJAX入门-AJAX 概念和 axios 使用
前端·javascript·ajax·html·js
在路上`23 分钟前
前端学习之后端java小白(三)-sql外键约束一对多
java·前端·学习
Pu_Nine_91 小时前
10 分钟上手 ECharts:从“能跑”到“生产级”的完整踩坑之旅
前端·javascript·echarts·css3·html5
東雪蓮☆2 小时前
从零开始掌握 Web 与 Nginx:入门详解
运维·服务器·前端·nginx
脑子慢且灵2 小时前
【JavaWeb】一个简单的Web浏览服务程序
java·前端·后端·servlet·tomcat·web·javaee
柯南二号2 小时前
【大前端】 断点续传 + 分片上传(大文件上传优化) 的前端示例
前端
前端小超超2 小时前
如何配置capacitor 打包的安卓app固定竖屏展示?
android·前端·gitee
xiaopengbc2 小时前
在Webpack中,如何在不同环境中使用不同的API地址?
前端·webpack·node.js
前端AK君3 小时前
React中台系统如何嵌入到业务系统中
前端
Slice_cy3 小时前
不定高虚拟列表
前端