如何讓js中的if判斷如絲般順滑詳解
前言
項(xiàng)目中的一個(gè)小需求點(diǎn),點(diǎn)擊按鈕,驗(yàn)證幾十個(gè)條件框,判斷所有條件框是否填寫(選擇)過(guò)數(shù)據(jù)(至少有一個(gè)條件判斷為真)再執(zhí)行對(duì)應(yīng)操作
判斷的條件框包含 Radio 單選框,Checkbox 多選框,Input 輸入框,InputNumber 計(jì)數(shù)器, Select 選擇器, Switch 開(kāi)關(guān)等
項(xiàng)目使用的 Element 組件庫(kù) V2.15.6
不同條件對(duì)應(yīng)的數(shù)據(jù)類型以及默認(rèn)值
- Radio 單選框 string ''
- Checkbox 多選框 array []
- Input 輸入框 string ''
- InputNumber 計(jì)數(shù)器 number 0
- Select 選擇器
- 單選 string ''
- 多選 array []
- Switch 開(kāi)關(guān) boolean false
代碼實(shí)現(xiàn)
思路一
直接用 if 判斷開(kāi)干,然后大概代碼如下(變量為模擬變量)
// 多條件判斷開(kāi)始,如下
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: '請(qǐng)選擇條件后重試',
type: 'warning'
})
return false
}
實(shí)際項(xiàng)目場(chǎng)景中的變量名因?yàn)檎Z(yǔ)義化字符很多, if 判斷沒(méi)寫幾個(gè)就寫了很長(zhǎng)一串, 然后寫了幾個(gè)就寫不動(dòng)了(感覺(jué)在寫一坨 shi )
能不能用更優(yōu)雅的方式實(shí)現(xiàn)呢?
思路二
把這些需要判斷的變量放到一個(gè)數(shù)組里,用 map 處理成 Boolean 類型,使用 includes 判斷數(shù)組中是否包含指定的 Boolean 值
// 多條件判斷開(kāi)始,如下
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: '請(qǐng)選擇條件后重試',
type: 'warning'
})
return false
}
好了,if 處理大量判斷用這種方式使是不是更絲滑了 ^-^
總結(jié)
到此這篇關(guān)于如何讓js中if判斷如絲般順滑的文章就介紹到這了,更多相關(guān)js中的if判斷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
參考文檔
- developer.mozilla.org/zh-CN/docs/…
- developer.mozilla.org/zh-CN/docs/…
- developer.mozilla.org/zh-CN/docs/…
- JS如何對(duì)Iframe內(nèi)外頁(yè)面進(jìn)行操作總結(jié)
- 簡(jiǎn)易版本JSON.stringify的實(shí)現(xiàn)及其六大特性詳解
- JSON.stringify的多種用法總結(jié)
- Vue實(shí)現(xiàn)在線預(yù)覽pdf文件功能(利用pdf.js/iframe/embed)
- JavaScript JSON.stringify()的使用總結(jié)
- 詳解如何解決使用JSON.stringify時(shí)遇到的循環(huán)引用問(wèn)題
- json.stringify()與json.parse()的區(qū)別以及用處
- Selenium+BeautifulSoup+json獲取Script標(biāo)簽內(nèi)的json數(shù)據(jù)
- 關(guān)于JavaScript?中?if包含逗號(hào)表達(dá)式
相關(guān)文章
多種方法實(shí)現(xiàn)load加載完成后把圖片一次性顯示出來(lái)
如何一個(gè)load 加載完成后把圖片一次性顯示出來(lái),下面有個(gè)不錯(cuò)的方法,希望對(duì)大家有所幫助2014-02-02
JavaScript使用面向?qū)ο髮?shí)現(xiàn)的拖拽功能詳解
這篇文章主要介紹了JavaScript使用面向?qū)ο髮?shí)現(xiàn)的拖拽功能,結(jié)合實(shí)例形式詳細(xì)分析了javascript基于面向?qū)ο蟮耐献Чδ軐?shí)現(xiàn)思路、原理與具體操作技巧,需要的朋友可以參考下2019-06-06
利用JS動(dòng)態(tài)生成隔行換色HTML表格的兩種方法
這篇文章主要介紹了利用JS動(dòng)態(tài)生成隔行換色HTML表格的兩種方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10
JS的replace方法與正則表達(dá)式結(jié)合應(yīng)用講解
replace方法的語(yǔ)法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正則表達(dá)式對(duì)象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。。為了幫助大家更好的理解,下面舉個(gè)簡(jiǎn)單例子說(shuō)明一下2007-12-12

