2016-03-01 53 views
1

什麼是一個簡單的方法來檢查的JavaScript如果(a.b.v.c.d.e ===真)

if (a.b.v.c.d.e === true) {} 

,並返回false,如果任何的B或C或V是不確定的?

Coffeescript很容易處理它,但是什麼是香草javascript的可比解決方案?有沒有一個圖書館能夠解決這個常見問題?

+1

'如果(_.get(一, 'b.c.v.c.d.e'))'用lodash。 – elclanrs

+0

if(undefined!== a.b.c.d.e && true === a.b.c.d.e){}'如果試圖訪問任何不存在的值將返回'undifined'。 –

+2

@Merianos,如果未定義'a','b','c'或'd',則發佈的代碼將引發異常。 –

回答

1

Javascript沒有一個漂亮的功能來做到這一點(不使用任何幫助函數)。您可以使用&&運營商要做到這一點:

if (a && a.b && a.b.v && a.b.v.c && a.b.v.c.d && a.b.v.c.d.e === true) {} 
1

您可以使用&&短路行爲來表達鏈接的相關性。

if (a && a.b && a.b.v && a.b.v.c && a.b.v.c.d && a.b.v.c.d.e === true) 
1

編寫一個函數,調用它是這樣的:

if (ignoreNulls(a, 'b', 'v', 'c', 'd', 'e') == true) { 
    // ... 
} 


function ignoreNulls() { 
    var args = Array.prototype.slice.call(arguments); 
    var subj = args.shift(); 
    while (prop = args.shift()) { 
    var v = subj[prop]; 
    if (v !== null && v != undefined) { 
     subj = v 
    } else { 
     return null; 
    } 
    } 
    return subj; 
}