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中判断json的方法总结

    为了让大家更好地了解javascript中判断json的方法,我将从以下三个方面进行详细讲解: 判断一个变量是否为json 判断一个字符串是否为json字符串 判断一个json对象是否为空对象 1. 判断一个变量是否为json 在javascript中,我们可以通过typeof运算符来判断一个变量的类型。如果是json类型,typeof返回的结果为“obje…

    JavaScript 2023年5月27日
    00
  • P3P 和 跨域 (cross-domain) cookie 访问(读取和设置)

    P3P(Platform for Privacy Preferences)是一个Internet标准,它在Web服务器和浏览器之间传递标准格式的隐私策略。P3P帮助网站明确并公开其隐私政策,并允许用户在浏览网站时了解网站将如何使用其个人信息。跨域cookie指的是在某个域名下,通过设置cookie使得另一个域名下的网站也可以共享这个cookie,即跨域共享c…

    JavaScript 2023年6月11日
    00
  • 分享8个JavaScript库可更好地处理本地存储

    下面是详细讲解: 分享8个JavaScript库可更好地处理本地存储 为什么要使用JavaScript库来处理本地存储? 在Web开发中,本地存储是一个很重要的概念。我们经常需要在用户的浏览器端存储数据,这些数据可以是用户的个人设置、应用的状态、页面的缓存等等。在HTML5标准中,浏览器原生提供了两种本地存储方式:localStorage和sessionSt…

    JavaScript 2023年6月11日
    00
  • JavaScript实现随机产生字符串的方法分享

    下面是详细讲解“JavaScript实现随机产生字符串的方法分享”的完整攻略: 1. 生成随机字符串的方法 生成随机字符串的方法有很多,其中一种是使用Math.random()方法加上一些简单的操作来生成。 具体实现代码如下: function generateRandomString(length) { var str = ”; var chars = …

    JavaScript 2023年5月28日
    00
  • javascript限制用户只能输汉字中文的方法

    要限制用户只能输入汉字中文,可以在JavaScript中使用正则表达式来检查用户输入的文本字符。以下是可以用来实现此目的的JavaScript代码: // 使用正则表达式检查文本中是否包含非中文字符 function isChinese(str) { var regex = /^[\u4E00-\u9FA5]+$/; // 匹配所有汉字 return reg…

    JavaScript 2023年5月19日
    00
  • JScript内置对象Array中元素的删除方法

    针对JScript内置对象Array中元素的删除方法,可以采取以下两种方式: 方法一:使用splice方法 Array对象的splice()方法可以用来删除元素,并向数组添加新元素。 其语法如下: array.splice(start, deleteCount, item1, item2, …) 参数说明: start:必需,整数,规定数组中开始删除和添…

    JavaScript 2023年6月11日
    00
  • JS实现消灭星星案例

    下面是针对JS实现消灭星星案例的完整攻略及示例说明: 简介 消灭星星是一款用JS实现的小游戏,玩家需要点击拥有相同颜色的符号,消除它们并获取分数。本文将详细介绍如何用JS实现这个小游戏。 基础知识 在开始之前,你需要掌握以下基础知识: HTML: 用来展示游戏界面; CSS: 用来美化游戏界面; JS: 用来控制游戏逻辑。 实现步骤 第一步:准备工作 首先,…

    JavaScript 2023年6月11日
    00
  • J2ME 程序开发注意要点

    J2ME(Java 2 Micro Edition)是针对移动设备如手机等嵌入式设备的一种Java平台。在进行J2ME程序开发时,我们需要注意以下几点: 1. 设备兼容性 不同的手机品牌和型号可能支持的Java平台版本、硬件和软件资源存在差异,因此,我们需要考虑设备兼容性。在进行J2ME程序开发之前,需要对目标设备的开发环境进行调查,以确定使用哪种版本的Ja…

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