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

以上是需要优化的代码
方案一:

简单明了,将key与value拼接,然后通过独享去枚举,然后取type的值
方案二:

将typeNum的多种值都罗列出来,然后再将该类型下的多种情况罗列出来,最后取值,在取值之前先判断了当前typeNum获取到的数据是否是对象,如果是就通过typeNum与typeValue一起取值,如果不是直接通过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中的方式,上面这里的代码主要是通过获取对象的key与value来进行处理,如果有typeValue字段,就通过Object.keys()与Object.values获取对象的key与value值,然后通过数组的indexOf获取当前typeValue所在下标,然后去Object.keys()数组中获取对应的jieXiType,如果没有typeValue数据则直接取枚举对象中的值