vue 使用js new Map()优化多个if else 执行方法

前言

  • 在实际开发中根据业务需求我们经常要判断情况,一个if 我们科技直接使用ES6就可以解决

  • 经常会出现根据不同的条件执行不同的方法,这是就会有多个if else 看起不太美观也费劲

  • js new map ()就可以解决这个问题,它就是一个容器,我们可以通过set,get存取东西

  • map 是以key value 形式存在的,只要我们把value存成方法,并且执行就可以解决问题了

  • 注意:map 的key注意类型,比如存的时候用的数字1,取的时候用字符串1,也会导致取不到

图片展示-注意:当你格式存储正确,取不到值报错可能是key类型不对

代码实现-dom-可以直接复制查看

<template><div class="result-box"><el-form :inline="true" :model="form"><el-form-item label="第一个值"><el-input v-model="form.oneprice" placeholder="输入值"></el-input></el-form-item>
​<el-form-item label="运算规则"><el-select v-model="form.region" placeholder="选择计算规则"><el-option label="乘法" value="1"></el-option><el-option label="加法" value="2"></el-option><el-option label="减法" value="3"></el-option></el-select></el-form-item>
​<el-form-item label="第二个值"><el-input v-model="form.twoprice" placeholder="输入值"></el-input></el-form-item>
​<el-form-item label="计算结果"><el-input v-model="form.result" placeholder="请点击计算结果"></el-input></el-form-item>
​<el-form-item><el-button type="primary" @click="onSubmit">计算结果</el-button></el-form-item></el-form></div>
</template>
​
<script>
export default {name: 'Newmap',data () {return {form: {// 计算值oneprice: null,twoprice: null,// 计算规则calculaterule: null,// 计算结果result: null},map: null}},created () {this.$nextTick(() => {this.map = new Map([['1', this.calculatemultiplication],['2', this.calculateaddition],['3', this.calculatesubtraction]])})},methods: {// x - 第一个值// y - 第二个值// 乘法calculatemultiplication (x, y) {this.$message.success('执行乘法')this.form.result = x * y},// 加法calculateaddition (x, y) {this.$message.success('执行加法')this.form.result = Number(x) + Number(y)},// 减法calculatesubtraction (x, y) {this.$message.success('执行减法')this.form.result = Number(x) - Number(y)},
​// 计算结果onSubmit () {// if else - 优化之前// if (this.form.region == 1) {//   this.calculatemultiplication(this.form.oneprice, this.form.twoprice)// } else if (this.form.region == 2) {//   this.calculateaddition(this.form.oneprice, this.form.twoprice)// } else if (this.form.region == 3) {//   this.calculatesubtraction(this.form.oneprice, this.form.twoprice)// } else {//   // 默认处理// }
​// 使用new map ()优化之后let dispose = this.map.get(this.form.region)dispose(this.form.oneprice, this.form.twoprice)}}
}
</script>
​
<style lang="scss" scoped>
.result-box {padding: 40px 20px;
}
</style>
 

总结:

经过这一趟流程下来相信你也对 vue 使用js new Map()优化多个if else 执行方法 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

有什么不足的地方请大家指出谢谢 -- 風过无痕

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

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

相关文章

Java封装一个根据指定的字段来获取子集的工具类

工具类 ZhLambdaUtils SuppressWarnings("all") public class ZhLambdaUtils {/*** METHOD_NAME*/private static final String METHOD_NAME "writeReplace";/*** 获取到lambda参数的方法名称** param <T> parameter* param function functi…

全志R128基础组件开发指南——图像采集

图像采集 CSI&#xff08;DVP&#xff09; 图像采集 SENSOR -> CSI 通路 CSI &#xff08;CMOS sensor interface&#xff09;接口时序上可支持独立 SYNC 和嵌入 SYNC(CCIR656)。支持接收 YUV422 或 YUV420 数据。 VSYNC 和HSYNC 的有效电平可以是正极性&#xff0c;也可…

流量分析(5.5信息安全铁人三项赛数据赛题解)

黑客通过外部的web服务器攻击到企业内部的系统中&#xff0c;并留下了web后门&#xff0c;通过外部服务器对内部进行了攻击。 目录 黑客攻击的第一个受害主机的网卡IP地址 黑客对URL的哪一个参数实施了SQL注入 第一个受害主机网站数据库的表前缀(加上下划线 例如abc_) 第一…

当路由器突然提示“未检测到入户网线”

找到浏览器的“安全DNS”&#xff0c;根据浏览器不同可能有差别。 开启安全DNS&#xff0c;使用“自定义” 地址用阿里的&#xff08;其它的也行&#xff09;&#xff1a; https://dns.alidns.com/dns-query{?dns}

【工程部署】在RK3588上部署OCR(文字检测识别)(DBNet+CRNN)

硬件平台&#xff1a; 1、firefly安装Ubuntu系统的RK3588&#xff1b; 2、安装Windows系统的电脑一台&#xff0c;其上安装Ubuntu18.04系统虚拟机。 参考手册&#xff1a;《00-Rockchip_RKNPU_User_Guide_RKNN_API_V1.3.0_CN》 《RKNN Toolkit Lite2 用户使用指南》 1、文…

AI创作系统ChatGPT网站源码+支持最新GPT-Turbo模型+支持DALL-E3文生图/AI绘画源码

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

【uni-app + uView】CountryCodePicker 国家区号组件

1. 效果图 2. 组件完整代码 <template><u-popup class="country-code-picker-container" v-if="show" :show

基于Qt 多线程(继承 QObject 的线程)

​ 继承 QThread 类是创建线程的一种方法,另一种就是继承QObject 类。继承 QObject 类更加灵活。它通过 QObject::moveToThread()方法,将一个 QObeject的类转移到一个线程里执行。恩,不理解的话,我们下面也画个图捋一下。 通过上面的图不难理解,首先我们写一个类继承 QObj…

虹科示波器 | 汽车免拆检修 | 2021款广汽丰田威兰达PHEV车发动机故障灯异常点亮

一、故障现象 一辆2021款广汽丰田威兰达PHEV车&#xff0c;搭载A25D-FXS发动机和动力蓄电池系统&#xff08;额定电压为355.2V&#xff0c;额定容量为45.0Ah&#xff09;&#xff0c;累计行驶里程约为1万km。车主反映&#xff0c;高速行驶时发动机突然抖动&#xff0c;且发动机…

原生JS实现视频截图

视频截图效果预览 利用Canvas进行截图 要用原生js实现视频截图&#xff0c;可以利用canvas的绘图功能 ctx.drawImage&#xff0c;只需要获取到视频标签&#xff0c;就可以通过drawImage把视频当前帧图像绘制在canvas画布上。 const video document.querySelector(video) con…

在Vue.js中,什么是slot(插槽)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

解决Python中使用requests库遇到的身份验证错误

在使用requests库进行HTTP请求时&#xff0c;用户遇到了一个AuthenticationRequired&#xff08;身份验证必须&#xff09;的错误。然而&#xff0c;当使用urllib.request.urlopen执行相同的操作时&#xff0c;却能够成功。同时&#xff0c;用户提供了自己的系统信息&#xff0…