如何優雅的寫多層if判斷

2021-10-03 03:51:39 字數 2004 閱讀 4788

前言

在日常專案中,我們經常會使用到if來進行判斷,可是多層的時候,你就會發現**很累贅

需求現在有4個產品,分別是手機、電腦、電視機、遊戲機,當然每個產品顯示的**不一樣

if判斷

看到這樣的需求,第一時間寫個if判斷,簡單快速,我們來看看**

let commodity = 

if (commodity.phone) else if (commodity.computer) else if (commodity.television) else if (commodity.gameboy)

這樣寫,也是可以實現的,可是一旦多個判斷,**太長了,維護和閱讀都很不友好

switch

這時候我們考慮使用switch

let commodity = 

const price = (name) =>

}price('手機') // 9999

可是這麼一看,好像也不能根本的解決問題,只是**簡潔了一點

map什麼是map?

建立map物件

const commodity = new map([

['phone', 9999],

['computer', 15999],

['television', 2999],

['gameboy', 2599]

])

建立獲取**函式

const price = (name) => 

price('phone') // 9999

這樣比if和switch**簡潔很多並且閱讀性大大提高了

做到這了,突然產品經理說,現在過年了,商品得有優惠,你需要設定不同時間段不同的**,並且裡面邏輯會不同,不能呼叫同樣的函式,這個時候好多個if判斷又誕生了,什麼雙11 雙12 年貨節…

如果按if來寫,就是在if中再巢狀if,這**可想而知…

map中的key使用物件

這個時候map又幫我們解決了這個問題了

const commodity = new map([

[, () => ],

[, () => ],

[, () => ],

[, () => ],

]);const showprice = (name, date) => )

}showprice('phone', '12-12')

這樣寫**易讀性更加好,整潔美觀

如果某幾個時間段,有相同的邏輯怎麼辦呢?

我們可以考慮把相同的邏輯進行快取

const checkprice = () => 

return new map ([

[, () => ],

[, showmessage],

[, () => ],

[, () => ],

])}const showprice = (name, date) => )

}showprice('phone', '11-11')

還能再簡化嗎?

通過正則進行優化

const checkprice = () => 

return new map ([

[/^phone_[0-4]$/, () => ],

[/^phone_[5-9]*$/, () => ],

[/^phone_.*$/, () => ],

])}const showprice = (name, date) => _$`) ? value.call() : ''

})}let date = [, ]

let target = date.find((item, index) => item.date === '12-28')

showprice('phone', target.key)

如何優雅的判斷null

string a a string b ab 判斷空 返回true objects.isnull a 判斷不等於null 返回true objects.nonnull a 對於 integer 的判空,可以使用 optional.ofnullable 來構造乙個 optional,然後使用 orel...

如何優雅的寫部落格 Typora picGo

怎麼優雅的寫部落格 typora picgo想想第一次寫筆記或者部落格是什麼時候,我已經記不清了,都隨著時間散落在磁碟的各個角落。後面可以寫一次你後用過哪些筆記軟體的專題 手動狗頭 先來幾張截圖看看 看看我多久沒用了 中心建議大家不要輕易切換筆記平台 血的教訓啊 印象筆記 onenote 也是我從頭...

如何優雅地寫部落格

如何優雅地寫部落格 現在寫部落格面臨著幾個問題 編寫麻煩,大部分的部落格編輯器都很爛,csdn和等等。維護麻煩,維護多個部落格的資料同步很麻煩。歷史檢視,大部分部落格編寫都不能檢視之前的歷史資料。用github做部落格倉庫,將資料都寫在github上,這樣可以隨時檢視一年前的部落格資料,方便在原文件...