一尘不染

在Javascript中,如何有条件地将成员添加到对象?

javascript

我想创建一个有条件添加成员的对象。简单的方法是:

var a = {};
if (someCondition)
    a.b = 5;

现在,我想编写一个更惯用的代码。我在尝试:

a = {
    b: (someCondition? 5 : 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),
 };

阅读 318

收藏
2020-04-25

共1个答案

一尘不染

在纯Javascript中,我想不出比您的第一个代码片段更惯用的东西。

但是,如果不是不可能使用jQuery库,那么$.extend()应该符合您的要求,因为如文档所述:

未定义的属性不会被复制。

因此,您可以编写:

var a = $.extend({}, {
    b: conditionB ? 5 : undefined,
    c: conditionC ? 5 : undefined,
    // and so on...
});

并获得您期望的结果(如果conditionBfalse,则在b中将不存在a)。

2020-04-25