前言
在日常專案中,我們經常會使用到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上,這樣可以隨時檢視一年前的部落格資料,方便在原文件...