map优化多个if

原代码如下,多个按钮的点击操作,其中val是操作的按钮的标志

const operationConst = {INSTALLAPP: 'installApp',STOPAPP: 'stopApp',HOME: 'home',CLEAR: 'clear'......
}
function moreOperation(val, list) {selectedList = list && list.length === 0 ? multipleSelection : list//卸载应用if (val === operationConst.UNINSYALLAPP) {unInstallAppDialogRef.value.visible = trueunInstallAppDialogRef.value.title = '卸载应用'unInstallAppDialogRef.value.list = selectedList}// 开启应用if (val === operationConst.STARTAPP) {visibleStartAndStopAPPDialog.value = truestartAndStopAPPData.visible = truestartAndStopAPPData.phoneList = selectedListstartAndStopAPPData.title = '启动应用'startAndStopAPPData.type = 'start'}//...........//还有很多if
}

上述代码多个if,代码过长,可以运用map去优化

优化1.0------------------------------------------------------------------------------------------------------------

//每个操作的map
const operationMap = new Map([
//前一个是标志,即val
//后面一个是处理的函数,抽出来放在useHook里去,最后一个是传递给函数的其中一个参数[operationConst.MIRROR, [openMirrorDia, mirrorDialogRef]],[operationConst.INSTALLAPP, [openInstallDia, installAppDialogRef]],[operationConst.UNINSYALLAPP, [openUninstallDia, unInstallAppDialogRef]],[operationConst.STARTAPP, [openStartDia, 'start']],//......省略后面
])//操作函数大大缩小代码量
function moreOperation(val, list) {let map = operationMap.get(val)
//每个函数要传递两个参数,第一个是operationMap的最后一个,第二个是selectedList,是固定的map[0](map[1], selectedList)
}

上述代码虽然减小了代码量,但是map语义性不明确,后期维护的时候,别人容易看不到

优化2.0版本----------------------------------------------------------------------------------------------------------

还没有试验运行对不对,但1.0版本试验是成功的。主要是掌握这个思想

这样把fn和params放一起,语义性更强!

const operationMap2={operationConst.MIRROR:{fn: openTenantMirrorDia,params :[mirrorDialogRef],operationConst.INSTALLAPP:{fn: openInstallDia,params :[installDialogRef]//省略其余多个...... 
}
function moreOperation(val, list) {if(val in operationMap1){let obj=operationMap2[val]obj['fn'](...obj[params])
}

优化2.0版本(第二种思路)------------------------------------------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新!2023年台湾10米DEM地形瓦片数据

上次更新谷歌倾斜摄影转换生成OSGB瓦片V1.1版本,使用该版本生产了台北、台中、桃园三个地方的倾斜摄影OSGB数据,在OSGB可视化软件中进行展示,可视化效果和加载效率俱佳。已经很久没更新地形瓦片数据,主要是热点地区的原始数据没有…

算法的时间复杂度(详解)

前言: 算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果 一、算法效率 1.1 如何衡量一个算法的好坏 如何衡…

3.Linux系统环境搭建

一、虚拟化机:指的是通过虚拟化技术将一台计算机分为多台逻辑计算机。注:虚拟机共用CPU和内存资源。 二、虚拟机用途: 1.搭建学习环境:例如在同一间实验室里,物理机Windows系统,虚拟机可以用Linux系统。 …

汇舟问卷:国外问卷调一天900

大家好,我是汇舟问卷,专注于国外问卷调查互联网项目。夏天已经来临,您是否在三伏天顶着大太阳上班,汗水浸湿了衣襟,却依然要面对繁琐的工作和无尽的压力? 在这个炎热的季节里,我们都渴望找到一…

什么是React?

01 Why React? What is React? I think the one-line description of React on its home page (https://react.dev/) is concise and accurate: “A JavaScript library for building user interfaces.” 我认为React主页(https://react.dev/)上的一行描述既简洁又准确: …

ch3运输层--计算机网络期末复习(持续更新中)

运输层位于网络层之上 运输层协议提供的某些服务受到网络层协议的限制。比如,时限和带宽保证。 运输层也提供自己的特殊服务。比如,可靠数据传输服务,安全性服务。 网络层:两个主机之间的逻辑通信 运输层:两个进程之间的逻辑通信 网络地址:主机的标识(IP地址) 传输地址: …

vmware中Ubuntu虚拟机和本地电脑Win10互相ping通

初始状态 使用vmware17版本安装的Ubuntu的20版本,安装之后什么配置都要不懂,然后进行下述配置。 初始的时候是NAT,没动的. 设置 点击右键编辑“属性” 常规选择“启用”: 高级选择全部: 打开网络配置,右键属…

玄机平台应急响应—Linux入侵排查

1、前言 这篇文章主要说一下linux的入侵排查,也就是说当你的服务器已经被入侵的时候,该如何去排查使其恢复正常。下面是排查的步骤,但是实际情况往往更为复杂,需要进一步来分析,而不是无脑的按照步骤来敲就完事了。 …

HAL库使用FreeRTOS实时操作系统时配置时基源(TimeBase Source)

需要另外的定时器,用systic的时候生成项目会有警告 https://blog.51cto.com/u_16213579/10967728

同比和环比

1、概述 同比和环比是两种常见的数据分析方法,用于衡量数据在不同时间段的变化情况。通过同比和环比的计算,可以更清晰地了解数据在不同时间段的增长或下降情况,从而为决策提供依据。 2、同比 同比(Year-on-Year, YoY&#xff09…

05-28 周二 TTFT, ITL, TGS 计算过程以及LLama2推理代码调试过程

05-28 周二 LLama2推理代码调试过程 时间版本修改人描述2024年5月28日15:03:49V0.1宋全恒新建文档 简介 本文主要用于求解大模型推理过程中的几个指标: 主要是TTFT,ITL, TGS 代码片段 import osdata_dir "/workspace/models/" m…

unity中的常用属性修饰符

unity中的常用属性修饰符 一、前言二、常用修饰符三、结语 一、前言 在做unity开发编辑脚本的时候经常会用到属性修饰符,使开发调试更加便捷。初学者见过最多的莫过于[Header("标题文本")]了吧,除此之外其实还有很多,这篇文章列举说…

MFC工控项目实例一主菜单制作

1、本项目用在WIN10下安装的vc6.0兼容版实现。创建项目名为SEAL_PRESSURE的MFC对话框。在项目res文件下添加相关256色ico格式图片。 2、项目名称:密封压力试验机 主菜单名称: 系统参数 SYS_DATA 系统测试 SYS_TEST 选择型号 TYP_CHOICE 开始试验 TES_STA…

U盘无法打开?数据恢复与预防措施全解析

在日常生活和工作中,U盘已成为我们存储和传输数据的重要工具。然而,有时我们会遇到U盘无法打开的情况,这无疑给我们带来了诸多不便。本文将深入探讨U盘打不开的现象、原因及解决方案,并分享如何预防此类问题的发生。 一、U盘无法访…

Java实现对象存储的4种方式(本地对象存储、MINIO、阿里云OSS、FastDFS)

文章目录 Java实现对象存储的3中方式1、概述2、本地对象存储2.1 配置本地文件相关信息2.2 通用映射配置 ResourcesConfig2.3 文件上传业务 LocalSysFileServiceImpl2.4 上传接口2.5 演示 3、MINIO3.1 依赖3.2 配置3.3 配置连接信息3.4. MINIO文件上传业务3.5 文件上传下载接口3…

高性价比、超强功能的开源工单解决方案

在企业日常运营中,工单管理系统是不可或缺的工具。高效的工单管理不仅能提升工作效率,还能显著提高客户满意度。今天,我们为您推荐搭贝工单派单系统——一款超高性价比、功能齐全的开源工单管理系统。 🔍 为什么选择搭贝工单派单…

LangChain入门开发教程(一):Model I/O

官方文档:https://python.langchain.com/docs/get_started/introduction/ LangChain是一个能够利用大语言模型(LLM,Large Language Model)能力进行快速应用开发的框架: 高度抽象的组件,可以像搭积木一样&a…

【PB案例学习笔记】-13 徒手做个电子时钟

写在前面 这是PB案例学习笔记系列文章的第11篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

python基础-数据结构-leetcode刷题必看-queue---队列-python的底层构建

文章目录 队列双端队列 deque底层存储deque接口1. __init__(self, iterable: Iterable[_T], maxlen: int | None None) -> None2. append(self, __x: _T) -> None3. appendleft(self, __x: _T) -> None4. copy(self) -> Self5. count(self, __x: _T) -> int6. …

java项目启动报错

java项目启动报错:java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.javac.tree.JCTree qualid’ 原因:编译和运行的版本不一样 点击idea文件 点击项目结构 把这两个版本…