2016-06-02 20 views
-1

Ist es möglich, if Zustand in return so hinzufügen, dass auf dem Booleschen Wert abhängig flagWenn innerhalb Rückkehr

es wurde in der Funktion wie

return { val1: 'aaa', val2: 'bbb'} 

oder

return { val1: 'aaa', val2: 'bbb', val3:'ccc'}. 
zurück

Of Natürlich kann ich tun

if (flag) { 
    return { val1: 'aaa', val2: 'bbb'} 
} else { 
    return { val1: 'aaa', val2: 'bbb', val3:'ccc'}. 
} 

aber ich mag es nicht, da es zu viele Eigenschaften gibt (nicht nur val1, val2 wie hier im Beispiel aber viele viele mehr), so gibt es einen riesigen Block, der in diesem Fall dupliziert wird.

Irgendwelche Ideen? Danke.

Antwort

4

Es ist ein häufiges Problem.

Die saubere Lösung ist Ihr Objekt zu deklarieren:

var vals = { val1: 'aaa', val2: 'bbb'}; 
if (flag) vals.val3 = 'ccc'; 
return vals; 

Es ist auch das, was die zugrunde liegende Logik nachahmt.

1

Versuchen:

var obj = { val1: 'aaa', val2: 'bbb'}; 

if (!flag) { 
    obj.val3 = 'ccc'; 
    //any other changes to the object you might want to add 
} 

return obj; 

Wenn Sie viele Eigenschaften haben, versuchen Sie vielleicht extend Ihr Grund Objekt mit einem Objekt mit zusätzlichen Eigenschaften, zum Beispiel jQuery.extend()

1

Mit Strich verwenden Sie so etwas tun kann:

return _.extend({ val1: 'aaa', val2: 'bbb' }, flag ? {} : { val3: 'ccc' });