我想创建一个有条件添加成员的对象。简单的方法是:
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