2015-11-22 51 views
3

是否可以在?:內更改字典並將該字典返回到同一個塊中。像這樣a > b ? <dict['c'] = 'I'm changed', return dict> : <some other code>;Javascript三元運算符(?:)更改並返回單個塊中的對象

我需要這裏面map功能。事情是這樣的:

var a = [...] 
a.map((itm) => return itm.isComposite ? itm[key] = transform(itm[data]); return itm : transform(itm)) 
+0

從三元返回沒有意義。也許顯示實際的代碼。 – epascarello

+0

增加真實案例 –

回答

9

是的,這可能使用comma operator

a > b ? (dict['c'] = "I'm changed", dict) : <some other code>; 

逗號運算符所有的操作數和返回的最後一個(最右邊)的一個值。


然而,正確的if聲明可能會在這裏更具可讀性的解決方案,這就是爲什麼我建議你使用它,而不是構建一個條件(「三元」)的表達。

+0

哇,這是可怕的 – toniedzwiedz

1

你可以做這樣的事情

這可以通過縮短:像這樣:

var result = a > b ? methodOne() : methodTwo(); 

methodOne()和methodTwo()可以返回結果。

希望這會幫助你。

+0

這樣的構造的目的是編寫較少的代碼。我認爲實現2個額外的方法可以更易讀,但更多的工作。所以不確定它在那裏合適 –

1

你可以做這樣的事情

a > b ? (d) => {d['c'] = 'I'm changed'; return dict;}(dict): <some other code>; 

>> var d = {};

>> 2 < 3 ? ((d) => {d.a =2; return d;}) (d) : 5;

>> Object {a: 2}

2

逗號運算符應該足夠了。無需使用return關鍵字。

var result = (a > b 
    ? (dict['c'] = "I'm changed", dict) 
    : <some other code>); 

如果你想返回的結果則是不言而喻的表達外:

return (a > b 
    ? (dict['c'] = "I'm changed", dict) 
    : <some other code>); 

這麼說,我寧願使用,如果這個問題的聲明。在我看來,長期的三元表達很難看懂。

相關問題