我想创建一个有条件地添加成员的对象。简单的方法是:
var a = {}; if (someCondition) a.b = 5;
现在,我想写一个更惯用的代码。我在尝试:
a = { b: (someCondition? 5 : undefined) };
但现在,b是a其值为的成员undefined。这不是预期的结果。
b
a
undefined
有没有方便的解决方案?
更新
我寻求一个可以处理几个成员的一般情况的解决方案。
a = { b: (conditionB? 5 : undefined), c: (conditionC? 5 : undefined), d: (conditionD? 5 : undefined), e: (conditionE? 5 : undefined), f: (conditionF? 5 : undefined), g: (conditionG? 5 : undefined), };
在纯 Javascript 中,我想不出比您的第一个代码片段更惯用的东西了。
但是,如果使用 jQuery 库不是不可能的,那么$.extend()应该满足您的要求,因为正如文档所述:
未定义的属性不会被复制。
因此,您可以编写:
var a = $.extend({}, { b: conditionB ? 5 : undefined, c: conditionC ? 5 : undefined, // and so on... });
并获得你期望的结果(如果conditionB是false,那么b将不存在于a)。
conditionB
false