JS中比Switch…Case更优雅的多条件判断写法

JS中使用Switch...Case方式进行多条件判断的常见缺点是比较冗长,不够简洁和优雅。本文将为大家介绍一种利用对象字面量来进行多条件判断的方式,来让代码更加优雅和易读。

使用对象字面量进行多条件判断的写法

使用对象字面量方式进行多条件判断,我们可以通过JS对象属性来表示条件判断中的每个case,通过函数属性来表示每个case对应的逻辑操作。示例如下:

const multiCondition = {
  caseA() {
    //TODO
  },
  caseB() {
    //TODO
  },
  caseC() {
    //TODO
  },
  default() {
    //TODO
  }
}

function executeCase (condition) {
  if (multiCondition[condition]) {
    multiCondition[condition]()
  } else {
    multiCondition['default']()
  }
}

上述代码中,multiCondition对象中分别定义了caseA、caseB、caseC和default四个函数属性,分别对应条件判断中的各个case和default。executeCase函数是一个对外暴露的函数,参数为condition,表示当前需要执行的case。函数内部进行更具当前条件判断不同的操作。

举例说明

下面来演示一个更加具体的场景:针对不同商品在购买时,需要计算其价格和折扣,并在订单中记录下来。这时候我们可以通过switch...case的方式实现:

const calculatePriceAndDiscount = (product, quantity) => {
  let price = 0
  let discount = 0
  switch (product) {
    case 'cup':
      price = 5
      discount = quantity >= 10 ? 0.05 : 0
      break
    case 'pen':
      price = 2
      discount = quantity >= 20 ? 0.1 : 0
      break
    case 'book':
      price = 10
      discount = quantity >= 5 ? 0.03 : 0
      break
    default:
      console.log('Invalid product')
      break
  }
  const payment = (1 - discount) * price * quantity
  return {price, discount, payment}
}

以上是传统方式的Switch...Case实现,当有新增product或需对既有case进行修改时,需要额外修改代码。而使用对象字面量进行多条件判断代码如下:

const calculatePriceAndDiscount = (product, quantity) => {
  const products = {
    cup: () => {
      return {price: 5, discount: quantity >= 10 ? 0.05 : 0}
    },
    pen: () => {
      return {price: 2, discount: quantity >= 20 ? 0.1 : 0}
    },
    book: () => {
      return {price: 10, discount: quantity >= 5 ? 0.03 : 0}
    },
    default: () => {
      console.log('Invalid product')
      return {price: 0, discount: 0}
    }
  }
  const {price, discount} = products[product]() || products['default']()
  const payment = (1 - discount) * price * quantity
  return {price, discount, payment}
}

我们可以注意到,使用对象字面量方式进行多条件判断可以通过加入属性的方式,更加灵活地对代码进行修改和适应场景变化。

以上就是“JS中比Switch...Case更优雅的多条件判断写法”的攻略,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS中比Switch…Case更优雅的多条件判断写法 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • javaScript事件学习小结(四)event的公共成员(属性和方法)

    首先,需要了解JavaScript中事件的公共成员包括属性和方法。属性包括类型(type)、目标(target)、当前目标(currentTarget)、时间戳(timeStamp)等,方法包括阻止默认事件(preventDefault)、停止冒泡(stopPropagation)等。 对于属性,可以在事件处理函数中使用event对象获取,例如: <b…

    JavaScript 2023年6月10日
    00
  • JavaScript字符串对象fromCharCode方法入门实例(用于把Unicode值转换为字符串)

    JavaScript字符串对象fromCharCode方法入门实例 简介 fromCharCode()是JavaScript中字符串对象的一个方法,用来将Unicode编码转换成实际字符串。 语法 String.fromCharCode(num1, num2, …, numN) 参数 num1 – 必选参数,当前要被转换的Unicode编码值 (必须在0…

    JavaScript 2023年5月19日
    00
  • JS难点同步异步和作用域与闭包及原型和原型链详解

    JS难点同步异步和作用域与闭包及原型和原型链详解攻略 JavaScript在前端开发中非常重要,但其语言特性较为复杂,其中同步异步和作用域与闭包及原型和原型链都是前端开发人员需要掌握的难点。下面我们就来详细讲解这三个难点的知识点及应用。 同步异步 在JS中同步执行和异步执行是最常见的两种执行方式。同步执行即是代码按照写入顺序依次执行,每一行代码等待上一行代码…

    JavaScript 2023年6月10日
    00
  • javascript下4个跨浏览器必备的函数

    JavaScript是一种脚本语言,用于向Web页面添加交互性。然而,不同的浏览器实现JavaScript时会有一些差异,这可能会导致一些代码在某些浏览器中不起作用。因此,编写跨浏览器兼容的JavaScript代码非常重要。在这里,我们介绍4个跨浏览器必备的函数。 1. 跨浏览器设置事件处理程序 在JavaScript中,添加事件处理程序是相当常见的。但是,…

    JavaScript 2023年6月10日
    00
  • require.js的用法详解

    下面就“require.js的用法详解”的完整攻略进行讲解。 1. 什么是require.js Require.js是一个JavaScript模块化管理工具,可以使得我们在编写代码时更好地管理模块的依赖关系,提高代码的可读性和可维护性。使用require.js的最大好处就是可以将 JavaScript 代码分解成多个模块,让它们以依赖树的形式进行加载。在使用…

    JavaScript 2023年5月27日
    00
  • javascript的防抖节流函数解析

    下面就来详细讲解“JavaScript的防抖节流函数解析”的完整攻略。 一、防抖函数 1.1 什么是防抖函数? 防抖函数是一种常用的JS功能,用于延迟搜索框或输入框等交互操作的调用时间,以提高用户的体验和性能。防抖函数会等待用户停止操作,并只在停止时才执行一次操作。 1.2 防抖函数的实现 下面是一个基本的防抖函数示例代码: function debounc…

    JavaScript 2023年6月11日
    00
  • JavaScript基于DOM操作实现简单的数学运算功能示例

    下面是“JavaScript基于DOM操作实现简单的数学运算功能示例”的完整攻略。 一、什么是DOM DOM(文档对象模型)是指浏览器将HTML文档解析成树状结构的一种方式。在DOM中,每一个HTML元素(标签)都是一个对象,开发者通过JavaScript可以访问和操作这些对象,实现页面的动态效果和交互功能。 二、使用DOM操作实现简单的数学运算 1. 示例…

    JavaScript 2023年5月28日
    00
  • javascript页面上使用动态时间具体实现

    我们来详细讲解一下Javascript页面上使用动态时间的具体实现。 一、实现方法 1.使用setInterval()方法实现动态时间 Javascript可以通过setInterval()方法,每隔一定时间执行一段代码,源码如下: setInterval(function(){ // 在此处执行需要执行的代码 }, 时间间隔); 其中,第一个参数是需要每隔…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部