做映射优化代码分支

75 阅读1分钟

你还在这么写分支?快别了兄弟

funciton User( name ){
    const map = {
        早上:'热干面',
        中午:'糖醋排骨',
        晚上:'麻辣龙虾',
    }
    if(name==='早上'){
        console.log('热干面')
    }else if(name==='中午'){
        console.log('糖醋排骨')
    }else if(name==='晚上'){
        console.log('麻辣龙虾')
    }
}
User('早上')

做映射 优化后

funciton User( name ){
    const map = {
        早上:'热干面',
        中午:'糖醋排骨',
        晚上:'麻辣龙虾',
    }
    if (map[name] ){
        console.log( map[name] )
    } else {
        console.log( '不知道吃什么' )
    }
}
User('早上')

同理 函数也可以这么用

funciton User( name ){
    const map = {
        早上: ()=> console.log('热干面'),
        中午: ()=> console.log('糖醋排骨'),
        晚上: ()=> console.log('麻辣龙虾'),
    }
    if(map[name]){
        map[name]()
    }else{
        console.log('不知道吃什么')
    }
}
User('早上')

略微复杂的函数同样可以

funciton User(name){
    if (name.includes('早上')) {
        console.log(name + '热干面')
    } else if (name.includes('中午') && name.length <= 3) {
        console.log(name + '糖醋排骨')
    } else {
        console.log( '不知道吃什么' )
    }
}

优化后

funciton User(name){
    const map = [
        [
            () => name.includes('早上'),
            () => console.log(name + '热干面')
        ],
        [
            () => name.includes('中午') && name.length <= 3,
            () => console.log(name + '糖醋排骨')
        ]
        ......
    ]
    const target = map.find(m => m[0]())
    if (target) {
        target[1]()
    } else {
        console.log('不知道吃什么')
    }
}
User('早上')