使用Map优化代码

最近在看同事代码时看到一段很长很长的代码,了解了一下大概功能就是在一个长列表里面有几十种类型的订单,一种或多种订单点击跳转对应的详情页,也就是说可能类型1跳转详情a,类型2和类型3跳转详情b,类型4,5,6跳转详情c… 反正就是多对一的关系。其实写起来也简单,直接if-else就完事,当时同事是这样写的

handleClick(type) {
    if(type === 1) {
        // do sth
    } else if(type ===2 || type === 3) {
        // do sth
    } else if(type === 5 || type === 6 || type === 10) {

    }
    // 下面还很多...
}

随着项目的迭代,有些7,8种类型共一个详情页的,写起来代码就变得挺长了,也不好读,其实可以使用include进行优化,这样判断条件那里看起来就清爽一些,但是if-else还是太长了, 其实可以使用设计模式中的策略模式进行优化,然后配合es6的 Map类型使可读性更高一些

data() {
    return {
        arr1: [2,3]
        arr2: [5,6,7,8,9]
        // more arr...
    }
}

handleClick(type) {
    let typeMap = new Map()

    typeMap.set(1, () => {
        // do sth
    })
    typeMap.set(this.arr1, () => {
        // do sth
    })
    typeMap.set(this.arr2, () => {
        // do sth
    })
    // more...

    const key = arr1.includes(type) ? arr1 : arr2.includes(type) ? arr2 : type
    typeMap.get(type)(key)
}

完事

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值