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

相关推荐
杨利杰YJlio4 小时前
KB5121003更新详解:安全启动证书、AI组件、资源管理器与安装验证
前端·javascript·后端
紫菜猫一只4 小时前
Vue 3 与 React 常用写法对比
前端
jinggongszh4 小时前
使用AI协同开发产品条码规则功能——从“理解方案、原型、接口文档”到“落地真实前端代码”
前端·人工智能·mes系统·mes工程架构
渔夫正在掘金4 小时前
Cordis 中文教程:渐进式构建插件化应用
前端·node.js·ai编程
打呵欠的猫4 小时前
前端团队 3 个月 AI 实践复盘:哪些场景 ROI 最高,哪些是伪需求
前端·ai编程
gyx_这个杀手不太冷静5 小时前
高级前端开发职业规划(2026—2035)
前端·面试·agent
程序员黑豆5 小时前
Java中的null与NullPointerException完全指南:安全处理、实战排查与面试题
java·前端·ai编程
编程快车5 小时前
用 Phaser 4 造一个空间解谜游戏:纯函数棋盘引擎、透明画布分层与轻量双语
前端·程序员
可视之道5 小时前
前端图形编辑器的多选框架:从单选到框选到 Shift 连选
前端
3秒一个大5 小时前
JS 数组去重全方案:从基础到通用万能去重函数
前端·javascript