我想创建一个有条件添加成员的对象.

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

现在,我想写一个更惯用的代码.我在努力:

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

但现在,ba的成员,其值为undefined.这不是预期的结果.

有简便的解决办法吗?

Update

我寻求一种解决方案,可以与几个成员一起处理一般情况.

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中,我想不出比第一个代码片段更地道的东西了.

然而,正如使用j$.extend()的问题所说,如果使用j$.extend()的文档不应该满足以下要求:

不复制未定义的特性.

因此,你可以写:

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

并获得你期望的结果(如果conditionBfalse,那么a中就不存在b).

Javascript相关问答推荐

访客柜台的风格React.js

JavaScript .Click()函数不起作用

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

如何在Obsidian dataview中创建进度条

在grafana情节,避免冲突的情节和传说

引用在HTMLAttributes<;HTMLDivElement>;中不可用

在react JS中映射数组对象的嵌套数据

单个HTML中的多个HTML文件

如何将未排序的元素追加到数组的末尾?

在使用位板时,如何在Java脚本中判断Connect 4板中中柱的对称性?

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

自定义图表工具提示以仅显示Y值

按什么顺序接收`storage`事件?

输入的值的类型脚本array.排序()

是否可以在不更改组件标识的情况下换出Reaction组件定义(以维护状态/引用等)?如果是这样的话,是如何做到的呢?

在HTML5画布上下文中使用putImageData时,重载解析失败

对不同目录中的Angular material 表列进行排序

使用props 将VUE 3组件导入JS文件

使用Java脚本替换字符串中的小文本格式hashtag

我如何才能让p5.js在不使用实例模式的情况下工作?