map优化多个if

news2024/11/19 9:41:30

原代码如下,多个按钮的点击操作,其中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 = true
    unInstallAppDialogRef.value.title = '卸载应用'
    unInstallAppDialogRef.value.list = selectedList
  }
  // 开启应用
  if (val === operationConst.STARTAPP) {
    visibleStartAndStopAPPDialog.value = true
    startAndStopAPPData.visible = true
    startAndStopAPPData.phoneList = selectedList
    startAndStopAPPData.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.coloradmin.cn/o/1715875.html

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

相关文章

Pandas格式化DataFrame的浮点数列

在呈现数据的同时,以所需的格式显示数据也是一个重要而关键的部分。有时,值太大了,我们只想显示其中所需的部分,或者我们可以说以某种所需的格式。 让我们看看在Pandas中格式化DataFrame的数值列的不同方法。 例1:将…

数字化业务流程升级再造,解困基本半导体的CRM应用5年之痒

在新能源汽车、工业互联、5G通信、消费电子等需求的强力拉动下,以碳化硅为代表的第三代半导体产业迎来爆发式增长。 深圳基本半导体有限公司(以下简称“基本半导体”)是中国第三代半导体创新企业,专业从事碳化硅功率器件的研发与…

探索标准差与方差的奥秘

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、标准差与方差的基础理解 代码案例 二、标准差与方差的计算方法 方差的计算 标准差的…

Selenium 自动化测试工具(1) (Selenium 工作原理,常用API的使用)

文章目录 什么是自动化测试什么是测试工具:Selenium 工作原理(重要)Selenium API定位元素CSS 选择器xpath 定位元素 通过Java代码实现自动化1. 定位元素2. 关闭浏览器3. 获取元素文本4. 鼠标点击与键盘输入5. 清空内容6.打印信息 什么是自动化测试 关于自动化&…

11.3G全国矢量地名路网SHP地图

我们在《2015年中国电子地图数据》一文中,分享了一份26.8G的全矢量地名路网地图。 这里再分享一份11.3G的全国矢量地名路网地图,这份数据虽然比2015版更小,但它比那一版更新。 值得一提的是这份数据的图层更丰富,比2015版多32个…

于ThinkPHP开发的赛事报名小程序

基于ThinkPHP开发的赛事报名微信小程序 功能包括 1、参赛公告 2、会员中心(会员注册、登录、成绩查询、资料管理、参赛记录管理) 3、个人报名和企业报名 (身份证验证防止重复报名) 4、培训报名 5、查询是否在库人员,根…

收藏:六款好用的企业防泄密软件推荐

企业数据如同企业的生命线,保护数据安全免遭泄露变得至关重要。 面对日益复杂的网络安全威胁,一套高效的企业防泄密软件成为企业安全架构的基石。 以下是精心挑选的六款企业防泄密软件,它们在数据加密、访问控制、行为监控等方面表现出色&am…

Java开发-特殊文本文件,日志技术

目录 01.特殊文件,日志技术概述 02.特殊文件:Properties属性文件 ​编辑Properties案例 特殊文件:XML文件 XML的作用和应用场景 读取XML文件中的数据 XML的生成 约束XML文件的编写[了解] 日志技术 日志技术的体系 ​编辑 ​编辑 Logback日志框架的概述 Logback快…

JS 中怎么删除数组元素?有哪几种方法?

正文开始之前推荐一位宝藏博主免费分享的学习教程,学起来! 编号学习链接1Cesium: 保姆级教程+源码示例2openlayers: 保姆级教程+源码示例3Leaflet: 保姆级教程+源码示例4MapboxGL: 保姆级教程+源码示例splice() JavaScript中的splice()方法是一个内置的数组对象函数, 用于…

VM虚拟机共享文件夹fuse: bad mount point `/mnt/hgfs‘: No such file or directory

报错显示挂载点 /mnt/hgfs 不存在,你需要先创建这个目录。可以按照以下步骤进行操作: 创建挂载点目录: sudo mkdir -p /mnt/hgfs 手动挂载共享文件夹: sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other 确保每次启动时自动…

FFMPEG+ANativeWinodow渲染播放视频

前言 学习音视频开发,入门基本都得学FFMPEG,按照目前互联网上流传的学习路线,FFMPEGANativeWinodow渲染播放视频属于是第一关卡的Boss,简单但是关键。这几天写了个简单的demo,可以比较稳定进行渲染播放,便…

重庆耶非凡科技选品师项目大揭秘:成功背后的故事与经验

在电商行业迅猛发展的今天,选品师这一职业愈发受到市场的关注。重庆耶非凡科技有限公司凭借其专业的选品团队和科学的选品方法,成为众多商家关注的焦点。那么,该公司的选品师项目是否真的有成功的案例呢?接下来,我们将从多个角度…

备受推崇的公司文件加密文件推荐榜单

迄今为止,加密依然是最有效的用于保护数据、通讯安全的手段之一 在数字化时代,文件加密软件成为了保护个人和企业数据安全的重要工具。随着技术的不断进步,市场上涌现出了众多优秀的文件加密软件。 以下十款文件加密软件因其出色的性能、易…

STM32-12-OLED模块

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 文章目录 1. OLED显示屏介绍2. OLED驱动原理3. OLED驱动芯片简介4…

企业电脑加密系统是如何发展的,今天最可靠的电脑加密系统是什么

企业电脑加密系统历经了几十年的发展,如今技术已经逐渐成熟,加密强度和防泄密效果越来越显著,那么它是怎么发展的,以及当今使用的加密技术是什么呢? 一、发展历程 1.早期探索阶段: 时间:上世纪…

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. …

增强团队建设和创造力的 6 个敏捷游戏

加入敏捷框架提供了对资源的访问和支持,可以帮助你的组织最大限度地发挥敏捷的优势。它还提供了一个与其他敏捷从业者联系的平台,以共享最佳实践并相互学习。 实践敏捷工作方法可以让团队按照自己的节奏,尽可能多地发挥创造力来追求目标&…

【408精华知识】关于存储系统,看这一篇就够了!

关于存储系统,其实是一个很完整的逻辑,在学完基础知识后,我们可以试着将整个存储系统的转化逻辑画下来,更形象化地去理解整个存储系统,如下图: 文章目录 (一)虚-->实(…

Python面向对象学习笔记

Python面向对象编程 记录人: 李思成 时间: 2024/05/01至2024/05/23 课程来源: B站Python面向对象 1.面向对象编程概述 官方概述 程序是指令的集合,运行程序时,程序中的语句会变成一条或多条指令,然后…

算法练习——字符串

一确定字符串是否包含唯一字符 1.1涉及知识点 c的输入输出语法 cin>>s; cout<<"NO"; 如何定义字符串 切记&#xff1a;在[]中必须加数字——字符串最大长度&#xff0c;不然编译不通过 char s[101]; 如何获取字符串长度 char s[101];cin>>s;i…