是否可以将if
条件添加到return
中,以便根据布尔值flag
它在函数中返回,如
return { val1: 'aaa', val2: 'bbb'}
或
return { val1: 'aaa', val2: 'bbb', val3:'ccc'}.
我当然能做到
if (flag) {
return { val1: 'aaa', val2: 'bbb'}
} else {
return { val1: 'aaa', val2: 'bbb', val3:'ccc'}.
}
然而我不喜欢它,因为有太多的属性(不仅仅是val1
,val2
在这个示例中,但是还有更多的属性)所以有一个巨大的块将被复制在这种情况下。
有什么想法吗? 谢谢。
答案 0 :(得分:4)
这是一个经常出现的问题。
干净的解决方案是声明你的对象:
var vals = { val1: 'aaa', val2: 'bbb'};
if (flag) vals.val3 = 'ccc';
return vals;
它也模仿了潜在的逻辑。
答案 1 :(得分:1)
尝试:
var obj = { val1: 'aaa', val2: 'bbb'};
if (!flag) {
obj.val3 = 'ccc';
//any other changes to the object you might want to add
}
return obj;
如果您有许多属性,可以尝试使用包含其他属性的对象extend
基本对象,例如使用jQuery.extend()
答案 2 :(得分:1)
使用下划线,您可以执行以下操作:
resources>
<string name="app_name">A simple game</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="title_activity_admobs">admobs</string>
<!-- -
This is an ad unit ID for a banner test ad. Replace with your own banner ad unit id.
For more information, see https://support.google.com/admob/answer/3052638
<!- -->
<string name="banner_ad_unit_id">4526809957646802/687614978</string>
<string name="title_activity_main">MainActivity</string>6
<string name="interstitial_ad_sample">Interstitial Ad Sample</string>
<string name="start_level">Level 1</string>
<string name="next_level">Next Level</string>
<!-- -
This is an ad unit ID for an interstitial test ad. Replace with your own interstitial ad unit id.
For more information, see https://support.google.com/admob/answer/3052638
<!- -->
<string name="interstitial_ad_unit_id">4526809957646802/6876146978</string>
<string name="title_activity_doa">doa</string>
</resources>