if (a == 1) {
console.log('a1')
} else if (a == 2) {
console.log('b2')
} else if (a == 3) {
console.log('c3')
} else if (a == 4) {
console.log('d4')
}
switch(a){
case 1:
console.log('a1');
break;
// ……
case 4:
console.log('d4');
break;
}
定义一个 object 作为配置对象来存放不同状态,通过链表查找。
const statusMap = {
1:()=>{
console.log('a1')
},
2:()=>{
console.log('b2')
}
// ……
}
// 执行
let a = 1
statusMap[a || 1]()
// 它就是个function,内容很复杂
const statusArr = [function(){
console.log(1)
},
function () {
console.log(2)
},]
let a = 1
statusArr[a || 1]()
function f1 (){
console.log(1)
}
function f2 (){
console.log(2)
}
const statusMap={
1:f1,
2:f1,
3:f1,
4:f1,
40:f2
}
let a = 2
statusMap[a]()
重构:
const statusMap = {
'1,2,3,4,5': f1,
40: f2
}
const keys = Object.keys(statusMap),
len = keys.length
const getVal=(param='')=>{
for (let i = 0; i < len; i++) {
const key = keys[i],
val = statusMap[key]
if (key.includes(param)) {
return val
}
}
}
let a = 2,
handle = getVal(a)
handle()
const map1 = new Map()
const statusArr = [1,2,3,4,5]
map1.set(statusArr,f1)
let handle = function(){
}
const getVal = (param = '') => {
for (let value of map1.entries()) {
console.log(JSON.stringify(value))
if (value[0].includes(param)){
console.log(value)
handle = value[1]
}
}
}
const a = 2
getVal(a)
handle()
const keyArr = ['1,2,3,4,5','40']
const valArr = [f1,f2]
const getVal = (param = '')=>{
let index = keyArr.findIndex((it)=>{
return it.includes(param)
})
return valArr[index]
}
let a = 2,
handle = getVal(a)
handle()
利用数组提供的下标,将 key 和 value 对应起来,进而获取想要的值。
推荐链接:https://blog.csdn.net/qq_40259641/article/details/83866457