首页 > 其他分享 >js 使用 eval 函数优化条件查询

js 使用 eval 函数优化条件查询

时间:2023-05-19 16:33:58浏览次数:45  
标签:calculateIncomeTax console key 查询 eval income js 优化

我们在写代码的使用,经常会遇到if else 很长很长的代码,这种要怎么优化,一直是仁者见仁智者见智的

我说下我的优化方案

原始代码

例如:

if (income <= 10000) {
	return income*0.365;
} else if (income <= 30000) {
	return (income-10000)*0.2+35600;
} else if (income <= 60000) {
	return (income-30000)*0.1+76500;
} else {
	return (income-60000)*0.02+105600;
}

有这样一段代码,该怎么优化?

优化

可以使用这种方式

const strategies = {
  '>60000': (income) => (income - 60000) * 0.02 + 105600,
  '>30000': (income) => (income - 30000) * 0.1 + 76500,
  '>10000': (income) => (income - 10000) * 0.2 + 35600,
  '<=10000': (income) => income * 0.365,
};

function calculateIncomeTax(income) {
  for (let key in strategies) {
    // 相当于执行 5000 > key
    if (eval(`${income}${key}`)) {
      return strategies[key](income);
    }
  }
}

console.log(calculateIncomeTax(5000)); // 1825
console.log(calculateIncomeTax(15000)); // 4220
console.log(calculateIncomeTax(35000)); // 9150
console.log(calculateIncomeTax(70000)); // 1260

上面这种方式与原始的,我说不出那个好那个坏,如果只有 一两个条件无疑是原始的好,但是随着条件过多,无疑是优化后的更佳,至于符合条件后调用的函数,可以自定义 ,这里不做赘述,其实这也是策略模式的思想

关于eval函数

eval() 函数会将传入的字符串当做 JavaScript 代码进行执行。

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/eval

标签:calculateIncomeTax,console,key,查询,eval,income,js,优化
From: https://www.cnblogs.com/makalochen/p/17415566.html

相关文章

  • uni.request(OBJECT)前端post请求数据json序列化
    一、uni-app前端post请求数据json序列化1.前置须知Content-Type实体头部用于指示资源的MIME(媒体)类型mediatype。在响应中,Content-Type标头告诉客户端实际返回的内容的内容类型。在请求中,客户端告诉服务器实际发送的数据类型。2.uni.request({})官方文档2.1dat......
  • 12-DSL查询语法-精准查询
    精确查询一般是查找keyword、数值、日期、boolean等类型字段。不会对搜索条件分词。常见的有:(1)term:根据词条精确值查询 (2) range:根据值的范围查询term查询因为精确查询的字段搜是不分词的字段,因此查询的条件也必须是不分词的词条。查询时,用户输入的内容跟自动值完......
  • SQL server 备份job堵塞查询
    SELECTreq.session_id,database_name=db_name(req.database_id),req.status,req.blocking_session_id,req.command,[sql_text]=Substring(txt.TEXT,(req.statement_start_offset/2)+1,((CASEreq.statement_end_offsetWHEN-1THENDatalength(txt.TEXT)......
  • JS删除对象中的某一属性(delete)
    通过delete操作符,可以实现对对象属性的删除操作<!--*@Descripttion:删除对象以及数组对象中的指定属性*@version:*@Author:zhangfan*@email:[email protected]*@Date:2020-07-0309:10:28*@LastEditors:zhangfan*@LastEditTime:2020-07-1515:03:00......
  • js中的foreach用法
    刚才采用foreach来遍历数组,达到格式化el-table中的数据,发现用foreach不生效,但是用户for循环没问题。吓我一跳,赶紧看了一下js中的foreach用法,没毛病啊。用了这么多年难道还会用错。<!--*@Descripttion:js中的foreach用法*@version:*@Author:zhangfan*@email:220704......
  • Cookie的使用(js-cookie插件)
    1.js-cookie一个简单,轻巧的JavaScriptAPI,用于处理Cookie2.安装npminstalljs-cookie--save3.引用importCookiesfrom'js-cookie'Vue.prototype.$Cookies=Cookies;4.创建<!--作者:zhangfan页面名称:Cookie的使用(js-cookie插件)--><template><divid="produc......
  • JSON.parse和JSON.stringify方法详解
    1.JSON.parse()用于从一个字符串中解析出json对象<!--作者:zhangfan页面名称:JSON.parse()、JSON.stringify()使用方法--><template><divid="product-list-one"><button@click="jsonParse()">执行jsonParse</button></div><......
  • JSP
    JSP已经过时的技术,但是还是有必要了解一些,因为现在仍然有可能在维护以前的旧项目。1、什么是jsp,他有什么用?jsp全称是javaserverpages。java的服务器页面。jsp的主要作用是代替Servlet程序回传html页面的数据。因为Servlet程序回传html页面数据是一件非常繁琐的事情,开发成本......
  • JSON、AJAX、i18n
    JSON、AJAX、i18n1、什么是JSON?1.1、JSON在JavaScript中的使用1.1.1、JSON的定义json是由键值对组成,并且由花括号(大括号)包围,每个键由引号引起来,键和值之间使用冒号进行分割,多组键值对之间进行逗号分隔。//json的定义varjsonobj={"key1":12,"key2":"abc",......
  • Vue.js学习记录之在元素与template中使用v-if指令实例(转贴)
    语法比较简单,直接上代码:<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <title></title> <scriptsrc="https://cdn.bootcss.com/vue/2.2.2/vue.......