特定場景下代替優化 if else 的方案,好用

2022-06-17 09:48:13 字數 1929 閱讀 7883

//

1、多個與條件

//相信大家都會遇到可能會有多個條件組合的問題

//比如有乙個參與熱賣活動贈積分活動,活動狀態(status),預熱中(status=1),進行中(status=2)。使用者型別(type)也有分普通使用者(type=1)vip使用者(type=2)

//規則是:

//1.在預熱中參與活動,vip使用者贈送 1000 積分,普通使用者贈送 700 積分。

//1.在進行中參與活動,vip使用者贈送 800 積分,普通使用者贈送 300 積分。

//之前寫法

//if(status===1&&type===1)

//else if(status===1&&type===2)

//else if(status===2&&type===1)

//else if(status===2&&type===2)

//優化寫法:

var status = 1

var type = 2

var obj =

console.log(obj['status=' + status + '&type=' +type])

//2、範圍查詢

//比如抽取中獎的號碼區間,中獎的號碼區間分別是 9-12,14-18,然後需要判斷號碼是否中獎了,邏輯很簡單就實現了

let num1 = 15let num2 = 13

if ((num1 >= 9 && num1 <= 12) || (num1 >= 14 && num1 <= 18))

if ((num2 >= 9 && num2 <= 12) || (num2 >= 14 && num2 <= 18))

//現在可以用some 進行封裝乙個函式,只需要一次封裝,往後的需求如果範圍區間改變了,就可以

function

handlecheckrange(num, ...ranges)

handlecheckrange(num1, [9, 12], [14, 18]) //

true

handlecheckrange(num2, [9, 12], [14, 18]) //

false

handlecheckrange(num2, [10, 14], [18, 20]) //

true

handlecheckrange(num2, [9, 12], [14, 18], [20, 22], [26, 30]) //

false

//3、多重if

//還有一種情況是,幾個 if-else 連著執行的**,

//function

initpostion()

if (selectedcitys.length > 0)

//其他初始化顯示的邏輯

}

//偽**一寫,想必有開發者已經看出問題了。所有的 if 都耦合在一起了, 而且 if 裡面的**邏輯可能會很多長。如果以後需求改了,要求選了國家,再選省市區,或者選擇區之後,還能選擇鎮和村。到時候 if 會變多,initpostion 整體**會變得巨大。維護起來會比較吃力,同時也容易出錯。

//解決這問題,可以把 if 拆分為函式。

function

initpostion()

},city() }}

let handlefns = ['provinces', 'city']

for(let fnname of handlefns)

//其他初始化顯示的邏輯

}

//可能這樣看著**是多了,但是管理起來會比原來的方案容易管理,每一塊 if 都被拆分為乙個函式,如果需要改動某一塊**,就改某一塊就行了,不需要對其他的**進行改動。如果有需求上的變動,就是改 handleobj 的屬性函式,以及 handlefns 的順序就行了。

////

////

//

特定場景下SQL的優化

1.大表的資料修改最好分批處理。1000萬行的記錄表中刪除更新100萬行記錄,一次只刪除或更新5000行資料。每批處理完成後,暫停幾秒中,進行同步處理。2.如何修改大表的表結構。對錶的列的字段型別進行修改,改變字段寬度時還是會鎖表,無法解決主從資料庫延遲的問題。解決辦法 1.建立乙個新錶。2.在老表...

效能優化 代替equals

很多人一定覺得這個題目老土,稍微有點基礎的人都覺得比較弱智,沒有什麼好討論的,因為這個問題討論的太多了。不過你既然進來了,不妨看完,就算給個面子吧,幾分鐘而已,可能你會有點啟發!很久沒有寫東西了,現在大部分人也不會關心程式的效率問題了,因為cpu總是閒著,記憶體總是空著。很多人都覺得對於基本型別用 ...

DOM幾個場景的優化場景?

問題 在input的onchange事件中進行實時請求,當輸入框輸入發生改變時就會傳送一次請求。比如輸入react 解決方式 新增防抖功能,設定乙個合理的時間間隔,避免時間在時間間隔內頻繁觸發,同時又能保證輸入後可以看到結果 1 每次value改變,就會發出一次請求 const handlechan...