優化js中的if else結構

2021-10-24 10:08:12 字數 3302 閱讀 3372

需求:經常在**中會有各種條件判斷,導致if/else使用過多,不僅閱讀麻煩,對於新加的條件,還不好擴充套件,文中列舉了7中優化方案,可以根據實際**環境選用。文中並沒有列舉switch,是因為switch結構使用上與is/else並無區別。

1、提前return,可以將判斷層級拉平

let animal =

'cat'

if(animal !==

'person')if

(animal ===

'pig')}

let animal =

'cat'

if(animal ===

'person'

)return

if(animal ===

'cat')if

(animal ===

'pig'

)

2、使用邏輯運算子

let animal =

'cat'

if(animal ===

'cat'

)else

let animal =

'dog'

animal ===

'cat'

&& console.

log(

'貓')

animal ===

'dog'

&& console.

log(

'狗')

animal ===

'cat'

|| console.

log(

'其他動物'

)animal ===

'dog'

|| console.

log(

'其他動物'

)

3、使用三元運算子

let animal =

'cat'

if(animal ===

'cat'

)else

let animal =

'cat'

animal ===

'cat'

? console.

log(

'貓')

: console.

log(

'其他動物'

)

4、使用includes

let animal =

'cat'

if(animal ===

'cat'

|| animal ===

'dog'

|| animal ===

'pig'

)let animal =

'cat'

let arr =

['cat'

,'dog'

,'pig']if

(arr.

includes

(animal)

)

5、使用object物件儲存,針對單個判斷條件比較方便,也可以字串拼接多個判斷條件,但是不推薦

let animal =

'cat'

if(animal ===

'cat'

)else

if(animal ===

'dog'

)else

if(animal ===

'pig'

)else

let animal =

'cat'

let animals =

console.

log(animals[animal]

)// 字串拼接多個判斷條件

let animal =

'cat'

let color =

'red'

let animals =

console.

log(animals[animal +

'_'+ color]

)

6、使用物件陣列,多個判斷條件

let animal =

'cat'

let color =

'white'

if(animal ===

'cat')if

(color ===

'white')}

else

if(animal ===

'dog')if

(color ===

'white')}

let animal =

'cat'

let color =

'white'

let animals =[,

,,]let _animal = animals.

filter

((item)

=> item.type === animal && item.color === color)

console.

log(_animal[0]

.name)

7、使用map資料結構

let animal =

'cat'

let color =

'white'

if(animal ===

'cat')if

(color ===

'white')}

else

if(animal ===

'dog')if

(color ===

'white')}

let animal =

'cat'

let color =

'white'

let animals =

newmap([

[,'紅貓'],

[,'白貓'],

[,'紅狗'],

[,'白狗']]

)let _animal =

[...animals]

.filter((

[key, value]

)=> key.type === animal && key.color === color)

let[_key, _name]

= _animal[0]

console.

log(_name)

js利用策略模式優化if else迴圈

js程式中最常用的if else迴圈,如果分枝很多的的情況下難免使寫出的程式又臭又長,但是根據需求又必須將這些分支處理,此時稍有經驗的程式設計師可能會想到用switch case優化但是只是僅僅做到利於閱讀,最好的方法是用策略模式進行優化。例如 有五個物件 obj1 obj5 然後需要判斷每個物件的...

if,else結構的說明

如果要講if,else結構的話,首先先講最基本的結構也是最簡單的一種。它的結構就是if 在 中要描寫的就是條件了,書上一開始在括號中填寫的是最簡單的true 對 或fault 錯 在大括號中要寫你想要表達的 可能只用語言表達不好理解,我認為用實際例子來證明是最好的解釋。if 1 1 2 這樣就通俗易...

SAS巨集中 if else和if else的區別

sas巨集中 if else和if else的區別 data a set x do m 1 to 3 do q 1 to 5 if x q nan and m id and x q id m q then do id m q 1 put 有值 且id相等 id x q id m q 上面 是正常的i...