Vue优化多个else if

文章讲述了在Vue组件中,如何将原有的if-elseif-else嵌套结构优化为数据驱动的方法,通过定义对象映射和函数,减少代码冗余,提高可维护性。涉及到了`comanyNameList`和`picList`的数据结构,以及`enableStateTypeMap`和`disabledStateTypeMap`的状态映射表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 原代码:

原场景是在mouted里面对多个else if进行判断。 

     if (this.$route.query.comanyName === '平安') {
            this.params.productCode = 'PN';
            this.insuranceCompany = this.pinganLogo;
        } else if (this.$route.query.comanyName === '人保') {
            this.params.productCode = 'RB';
            this.insuranceCompany = this.piccLogo;
        } else if (this.$route.query.comanyName === '众安') {
             this.params.productCode = 'ZA';
            this.zhongLogoShow = true;
        } else if (this.$route.query.comanyName === '大地') {
           this.params.productCode = 'DD';
           this.insuranceCompany = this.dadiLogo;
    }
 优化代码:

 在data里面

    comanyNameList: {
                '平安 ': 'PN',
                '人保 ': 'RB',
                '众安 ': 'ZA',
                '大地': 'DD',
            },
            picList: {
                '平安': pinganLogo,
                '人保': piccLogo,
                '大地': dadiLogo,
            }

mouted里面

     let obj = this.showDetail(this.$route.query.comanyName)
        this.params.productCode = obj.productCode
        this.insuranceCompany = obj.insuranceCompany

方法里面

    showDetail(comanyName) {
            let obj = {
                productCode: this.comanyNameList[comanyName],
                insuranceCompany: this.picList[comanyName]
            }
            return obj
        },
 同理可优化其他判断逻辑
if (row.tianrunStatus == true) {
  if (row.tianrunSyncStatus == 'APPLYING') {
    return '启用(申请中)'
  } else if (row.tianrunSyncStatus == 'APPLY_FAILURE') {
    return '启用(申请失败)'
  } else if (row.tianrunSyncStatus == 'APPLY_SUCCESS') {
    return '启用(申请成功)'
  } else if (row.tianrunSyncStatus == 'SYNCHRONIZING') {
    return '启用(同步中)'
  } else if (row.tianrunSyncStatus == 'SYNC_SUCCEEDED') {
    return '启用(同步成功)'
  } else if (row.tianrunSyncStatus == 'SYNC_FAILED') {
    return '启用(同步失败)'
  } else {
    return '启用'
  }
} else if (row.tianrunStatus == false) {
  if (row.tianrunSyncStatus == 'SYNCHRONIZING') {
    return '禁用(同步中)'
  } else if (row.tianrunSyncStatus == 'SYNC_SUCCEEDED') {
    return '禁用(同步成功)'
  } else if (row.tianrunSyncStatus == 'SYNC_FAILED') {
    return '禁用(同步失败)'
  } else {
    return '禁用'
  }
} else {
  return '--'
}
 优化:
const enableStateTypeMap = {
  'APPLYING': '启用(申请中)',
  'APPLY_FAILURE': '启用(申请失败)',
  'APPLY_SUCCESS': '启用(申请成功)',
  'SYNCHRONIZING': '启用(同步中)',
  'SYNC_SUCCEEDED': '启用(同步成功)',
  'SYNC_FAILED': '启用(同步失败)',
}

const disabledStateTypeMap = {
  'SYNCHRONIZING': '禁用(同步中)',
  'SYNC_SUCCEEDED': '禁用(同步成功)',
  'SYNC_FAILED': '禁用(同步失败)',
}
/** 状态code判断返回中文描述 */
export const statusJudgmentFun = (status, syncStatus) => {
  if (status == true) {
    const syncStatusText = enableStateTypeMap[syncStatus]
    return syncStatusText ? syncStatusText : '启用'
  } else if (status == false) {
    const syncStatusText = disabledStateTypeMap[syncStatus]
    return syncStatusText ? syncStatusText : '禁用'
  } else {
    return '--'
  }
}
/** 使用 */
statusJudgmentFun(row.tianrunStatus,row.tianrunSyncStatus)
 switch用法
if(row.tianrunStatus === true){
switch(row.tianrunSyncStatus){
case 'APPLYING':
return '启用(申请中)';
case 'APPLY_FAILURE':
return '启用(申请失败)';
case 'APPLY_SUCCESS':
return '启用(申请成功)';
case 'SYNCHRONIZING':
return '启用(同步中)';
case 'SYNC_SUCCEEDED':
return '启用(同步成功)';
case 'SYNC_FAILED':
return '启用(同步失败)';
default:
return '启用';
}
} else if(row.tianrunStatus === false){
switch(row.tianrunSyncStatus){
case 'SYNCHRONIZING':
return '禁用(同步中)';
case 'SYNC_SUCCEEDED':
return '禁用(同步成功)';
case 'SYNC_FAILED':
return '禁用(同步失败)';
default:
return '禁用';
}
} else{
return '--';
}
示例二
      if (item.province) {
                     if (item.province == '上海市' || item.province == '天津市' || item.province == '北京市' || item.province == '重庆市') {
                         item.province = item.province.replace('市', '')
                     } else if (item.province == '内蒙古自治区' || item.province == '西藏自治区') {
                         item.province = item.province.replace('自治区', '')
                     } else if (item.province == '广西壮族自治区' || item.province == '新疆维吾尔自治区' || item.province == '宁夏回族自治区') {
                         item.province = item.province.slice(0, 2)
                     } else {
                         item.province = item.province.replace('省', '')
                     }
                     this.map.series[0].data.push({
                         name: item.province,
                         value: item.loanCount
                     });

                }
优化版
                    const provinceMapping = {
                        '上海市': '上海',
                        '天津市': '天津',
                        '北京市': '北京',
                        '重庆市': '重庆',
                        '内蒙古自治区': '内蒙古',
                        '西藏自治区': '西藏',
                        '广西壮族自治区': '广西',
                        '新疆维吾尔自治区': '新疆',
                        '宁夏回族自治区': '宁夏'
                    };
                    item.province = provinceMapping[item.province] || item.province.replace(/自治区|省/g, '');
                    this.map.series[0].data.push({
                        name: item.province,
                        value: item.loanCount
                    });
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值