2016-03-30 13 views
5

Mam następujący kodpoprawić kod warunku

var oDataEn = aData[0][aProperties[0].split('/')[0]]; 
if (!(oDataEn != null && oDataEn.results && oDataEn.results.length > 0)) { 
    ... 
    else 

... 

ten pracuje OK z wyjątkiem gdy

aData[0] = 'undefined' 

moje pytanie brzmi, czy istnieje lepiej sposób napisać to zamiast po prostu dodawanie przed

Nie chcę mieć dwóch, jeśli to możliwe ...

+0

Czy chcesz pominąć, jeśli aData [0] jest niezdefiniowana? –

+0

Myślę, że masz literówkę w 'aData [0] = 'undfiend'' powinno być" niezdefiniowane " – kabirbaidhya

+0

@mplungjan - Dzięki, ale nie udało się wcześniej z aData [0], która jest niezobowiązująca ... –

Odpowiedz

8

Rozpocznij trójskładnikowy - sądzę Adata [0] Może być falsy (null nieokreślone 0 lub ""):

var oDataEn = aData[0]?aData[0][aProperties[0].split('/')[0]]:null; 
if (oDataEn && oDataEn.results && oDataEn.results.length > 0) { 
0
 if(aData[0] === undefined){} 

to najlepszy sposób, jaki do tej pory wiem.

jak na swój komentarz

 if(typeof aData[0] != 'undefined' /*&& other if statements*/){} 

Więc to nie będzie przetwarzać jeśli jest niezdefiniowany.

+0

Dzięki, ale mam zamiar napisać to lepiej dla całego kontekstu, nie tylko jeśli dodałem na końcu pytania:) (mam na myśli spojrzenie na całe oświadczenie z pierwszym i drugim, jeśli stwierdzenie ...) –

+0

Nie chcę mieć dwóch, jeśli to możliwe ... –

+0

@RaynD Sprawdź moją zaktualizowaną odpowiedź –

0

Stosując operatora trójskładnikowego u można to zrobić. Operator trójskładnikowy zredukuje tylko linię kodów.

var oDataEn = aData[0] === undefined ? '' : aData[0][aProperties[0].split('/')[0]];