//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...