2016-05-03 6 views

Antwort

0

Ich denke, das den Trick tun sollten:

scope.isValid = function() { 
    return (a.3 === undefined ? a.1 && a.2 : a.1 && a.2 && a.3); 
} 

Sie sollten über ternary operators, lernen sie ein wahnsinnig leistungsfähiges Werkzeug ist, wenn Sie den Griff auf es.

0

Sie müßten reduzieren, um

(a.1 && a.2 && a.3) || (a.1 && a.2), 

oder Sie können zu normalisieren verwenden Array den letzten nicht-null/empty-Wert finden reduzieren.

[a.1, a.2, a.3].reduce(function(a,b) { return b || a; }, null); 
+0

'&& a.3' ist nutzlos – Tushar

+0

' && a.3' turns '(a.1 && a.2 && a.3) 'zu einem falschen Wert, der dann auf' (a.1 && a.2) ', andernfalls wird' a.3' zurückgegeben. – ArcSine

+0

Das bedeutet, es ist nutzlos. Wenn 'a.3' falsch ist, gib' a.1 && a.2' sonst false zurück. Das ist dasselbe wie 'if (a.3) {return a1 && a2 & & true;} sonst {return a1 && a2}' – Tushar

0

Dies ist ein Job für den ternären Operator

return (a.3 === undefined)?(a.1 && a.2):(a.1 && a.2 && a.3); 

es wahrscheinlich möglich ist, es nicht zu benutzen, aber ich denke, auf diese Weise besser lesbar ist.