Benyi Hsia

我是Benyi,這裡存放關於資訊科技的文章

JavaScript if ( A || B ) 的另外一種寫法

| Comments

當我們要使用 JavaScript 撰寫 OR 測試條件的時候
可能會這樣寫

if ( A == 15 || B == 15 || C == 15 ) {

}

或者是

if ( A.isValid() || B.isValid() || C.isValid() ) {

}

這樣其實很容易理解
條件不多的時候,其實程式碼才短短一行,也無所謂。

然而,如果當我們要測試的語句很長,或是 OR 的條件很多
這樣子寫,其實不太容易維護 (萬一要增加新的條件,又要一直 || 下去)

其實我們可以用 indexOf 來改寫

var A = 10;
var B = 11;
var C = 12;

var condition = [
  A == 10,
  B == 15,
  C == 20,
]
// [true, false, false]

if ( condition.indexOf(true) !== -1 ) {
    // 條件成立
}

或者是

var condition = [
  moment(d, 'M-D', true).isValid(),
  moment(d, 'M月D日', true).isValid(),
  moment(d, 'M/D', true).isValid(),
]

if ( condition.indexOf(true) !== -1 ) {
    // 條件成立
}

Array.indexOf(element) 會傳回 elementArray 中的第幾個次序
例如

  var a = ["你", "我", "他"];
  console.log( a.indexOf('我') ) 
  // 1

如果找不到,則會傳回 -1

所以只要檢測 indexOf !== -1,則表示某東西在陣列裡,
也就是如果這個陣列,「只要有 true」,那麼 if or 就會成立。

Comments

comments powered by Disqus