当前位置: 首页 > 知识库问答 >
问题:

在JavaScript中,如何有条件地向对象添加成员?

杨无尘
2023-03-14

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

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

现在,我想写一段更地道的代码。我正在尝试:

a = {
    b: (someCondition? 5 : undefined)
};

但是现在,b是a的成员,其值是未定义的。这不是期望的结果。

有什么方便的解决方案吗?

使现代化

我寻求一种能够处理几个成员的一般情况的解决方案。

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),
 };

共有3个答案

柴宏阔
2023-03-14

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

但是,如果使用jQuery库不是不可能的,那么$.扩展()应该满足您的要求,因为正如留档所说:

不复制未定义的属性。

因此,你可以写:

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

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

史朗
2023-03-14
const obj = {
   ...(condition) && {someprop: propvalue},
   ...otherprops
}

现场演示:

js prettyprint-override">const obj = {
  ...(true) && {someprop: 42},
  ...(false) && {nonprop: "foo"},
  ...({}) && {tricky: "hello"},
}

console.log(obj);
林华皓
2023-03-14

我认为@InspiredJW用ES5做到了这一点,正如@trincot指出的,使用es6是一种更好的方法。但我们可以通过使用扩展运算符以及逻辑和短路评估来添加更多的糖:

const a = {
   ...(someCondition && {b: 5})
}
 类似资料:
  • 问题内容: 我想创建一个有条件添加成员的对象。简单的方法是: 现在,我想编写一个更惯用的代码。我在尝试: 但是,现在是,其值为的成员。这不是期望的结果。 有方便的解决方案吗? 更新资料 我寻求一个可以解决几个成员的一般情况的解决方案。 问题答案: 在纯Javascript中,我想不出比您的第一个代码片段更惯用的东西。 但是,如果不是不可能使用jQuery库,那么$.extend()应该符合您的要求

  • 我正在尝试执行以下操作以满足代码构建器的要求(具体来说是Sencha Cmd)。 这是我需要做的本质。关键因素是函数体必须以返回对象文字结束。由于生成器中的限制,我无法返回变量。那么,如果参数includeB为true,如何在下面的伪代码点添加属性“b”,但如果为false,则根本不添加属性。不允许ie b==未定义或b==null。 也许这是不可能的。 感谢阅读和考虑, 默里

  • 我想有条件地向对象添加一个属性。目前我有这个: 问题是如果汽车。电池不存在我有电池:未定义。如果对象中不存在该属性,我宁愿不要该属性。我怎样才能做到这一点?

  • 问题内容: 如果满足特定条件,是否有办法仅向React组件添加属性? 我应该在渲染后基于Ajax调用将required和readOnly属性添加到表单元素中,但是由于readOnly =“ false”与完全省略该属性不同,因此我看不到如何解决此问题。 下面的示例应解释我想要的内容,但将无法正常工作(解析错误:意外的标识符)。 问题答案: 显然,对于某些属性,如果您传递给它的值不真实,React足

  • 问题内容: 假设我有一个对象 如何通过添加方法扩展该对象,并确保将来的实例具有此方法? 问题答案: 您需要将其添加到Foo的原型中:

  • 我在demo.json中有这个json对象