多个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数据则直接取枚举对象中的值

相关推荐
im_AMBER5 分钟前
React 12
前端·javascript·笔记·学习·react.js·前端框架
开开心心就好5 分钟前
电脑音质提升:杜比全景声安装详细教程
java·开发语言·前端·数据库·电脑·ruby·1024程序员节
午安~婉16 分钟前
HTML CSS八股
前端·css·html
有事没事实验室17 分钟前
css变量
前端·css
前端付豪29 分钟前
Vue 中的 JSX:让组件渲染更灵活的正确方式
前端·javascript·vue.js
在泡泡里30 分钟前
前端规范【四】eslint(antfu)、lefthook、commitlint
前端
烛阴31 分钟前
Python 几行代码,让你的照片秒变艺术素描画
前端·python
Jolyne_1 小时前
如何实现无感刷新Token
前端
用户4099322502121 小时前
Vue3响应式系统的底层原理与实践要点你真的懂吗?
前端·ai编程·trae
qq_479875431 小时前
RVO和移动语义
前端·算法