让 js 中的 if 判断如丝般顺滑

简介: 项目中的一个小需求点,点击按钮,验证几十个条件框,判断所有条件框是否填写(选择)过数据(至少有一个条件判断为真)再执行对应操作判断的条件框包含 Radio 单选框,Checkbox 多选框,Input 输入框,InputNumber 计数器, Select 选择器, Switch 开关等。

7569b2018de64695a7ee1151b592e585.jpg


项目中的一个小需求点,点击按钮,验证几十个条件框,判断所有条件框是否填写(选择)过数据(至少有一个条件判断为真)再执行对应操作

判断的条件框包含 Radio 单选框,Checkbox 多选框,Input 输入框,InputNumber 计数器, Select 选择器, Switch 开关等。

项目使用的 Element 组件库  V2.15.6


不同条件对应的数据类型以及默认值


  • Radio 单选框  string  ''
  • Checkbox 多选框  array[]
  • Input 输入框  string  ''
  • InputNumber 计数器  number  0
  • Select 选择器
  • 单选 string  ''
  • 多选 array  []
  • Switch 开关  boolean  false


代码实现


思路一

直接用 if  判断开干,然后大概代码如下(变量为模拟变量)

// 多条件判断开始,如下
if (obj.radio1 || obj.checkbox1.length > 0 || obj.input1 || obj.inputNumber1 > 0 || obj.select1 || obj.select2.length > 0 || obj.switch1 || obj.radio2 || obj.checkbox2.length > 0 || obj.input2 || obj.inputNumber2 > 0 || obj.select3 || obj.select4.length > 0 || obj.switch2  ...) {
  // do something
} else {
  // 条件不符,提示
  this.$message({
    message: '请选择条件后重试',
    type: 'warning'
  })
  return false
}


实际项目场景中的变量名因为语义化字符很多, if 判断没写几个就写了很长一串, 然后写了几个就写不动了(感觉在写一坨 shi )

能不能用更优雅的方式实现呢?


思路二


把这些需要判断的变量放到一个数组里,用 map 处理成 Boolean  类型,使用 includes 判断数组中是否包含指定的 Boolean


// 多条件判断开始,如下
const arr = [
  obj.radio1,
  obj.checkbox1.length,
  obj.input1,
  obj.inputNumber1,
  obj.select1,
  obj.select2.length,
  obj.switch1,
  obj.radio2,
  obj.checkbox2.length,
  obj.input2,
  obj.inputNumber2,
  obj.select3,
  obj.select4.length,
  obj.switch2 
  ...
]
const arr1 = arr.map(item => Boolean(item))
if (arr1.includes(true)) {
  // do something
} else {
  // 条件不符,提示
  this.$message({
    message: '请选择条件后重试',
    type: 'warning'
  })
  return false
}

好了,if 处理大量判断用这种方式使是不是更丝滑了 ^-^


参考文档


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

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

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


相关文章
|
6天前
|
JavaScript 前端开发
【Javascript保姆级教程】if判断语句的三种形式
【Javascript保姆级教程】if判断语句的三种形式
125 0
|
10月前
|
JavaScript 前端开发
Javascript用数据替换if或switch的解决方案
Javascript用数据替换if或switch的解决方案
57 0
|
6月前
|
JavaScript
vue.js提交按钮时简单的if判断表达式示例
vue.js提交按钮时简单的if判断表达式示例
30 0
|
10月前
|
JavaScript
清除JS定时器setInterval方法防止if条件语句判断无效的解决方案
清除JS定时器setInterval方法防止if条件语句判断无效的解决方案
125 0
|
11月前
|
人工智能 JavaScript 前端开发
JS中一些判空操作,判null,判undefined操作和简化操作和if操作
JS中一些判空操作,判null,判undefined操作和简化操作和if操作
|
JavaScript
js 如何if( a== 1 && a == 2 && a==3)
js 如何if( a== 1 && a == 2 && a==3)
107 0
|
JavaScript 前端开发
JavaScript语言基础之if语句
if语句是JavaScript中最基本的条件语句,用于根据条件执行不同的代码块。本文将介绍if语句的语法、用法和一些实际应用场景。
123 0
|
JavaScript 前端开发
JavaScript判断各种资源是否加载完成的方法汇总,资源预加载问题
JavaScript判断各种资源是否加载完成的方法汇总,资源预加载问题
509 0
|
JavaScript 前端开发
JavaScript的流程控制之if条件语句和switch选择语句(一)
JavaScript的流程控制(一) 接下来我么来讲一下JavaScript的流程控制,JavaScript中的流程控制主要包括条件语句和循环语句。这篇博客主要讲条件语句。说到条件语句主要包括if条件语句和switch选择语句两种。 1.if语句 //语法: // if(判断的条件){ // 条件成立时的执行代码 // } //if语句当条件不成立时,不执行任何的代码 var oDate=new Date(); console.log(oDate.getDay()); if(oDate.getDay()==6){
|
算法 JavaScript 前端开发
判断链表中是否又环使用JavaScript解决算法问题
判断链表中是否又环使用JavaScript解决算法问题
122 0
判断链表中是否又环使用JavaScript解决算法问题