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

ES6 Javascript速记创建属性(仅当其为truthy时)

况嘉运
2023-03-14

假设我有

const {status} = req.body;

仅当状态具有真实值时(除了nullundefined或空字符串),我才希望在查询对象中包含状态,

现在我在做这个,,

const query = {
   otherCondition: 1,
};

if (status) {
  query.status = status;
}

有没有办法避免使用ES6对象速记的if子句?

如果我使用,

const query = {
   otherCondition: 1,
   status,
}

当状态为定义时,它生成

{
   otherCondition: 1,
   status: "undefined",
}

共有2个答案

法烨烨
2023-03-14
const status = null;
{
   otherCondition: 1,
   status: (status) ? status: false,
}

这将返回

{
   otherCondition: 1,
   status: false,
}
南宫龙野
2023-03-14

可以将对象排列与短路评估一起使用:

...status && { status }

如果state是一个错误的值,则计算的表达式不会返回对象,而扩展名将忽略它。如果它是一个tr关税值,短路将“返回”{状态}对象,扩散将以正常方式工作:

假的

const {status} = {};

const query = {
   otherCondition: 1,
   ...status && { status }
};

console.log(query);
 类似资料:
  • 问题内容: 我想在Python中创建一个动态对象(在另一个对象内部),然后向其添加属性。 我试过了: 但这没用。 有任何想法吗? 编辑: 我正在从循环遍历值列表的循环中设置属性,例如 在上面的例子中,我会得到,,。 我使用该函数是因为我不知道如何从循环中进行操作。 如何根据上例中的值设置属性? 问题答案: 您可以使用我古老的Bunch配方,但是如果您不想创建“绑定类”,则Python中已经存在一个

  • OrientDB中的属性就像数据库表中的类和列的字段。 创建属性是用于为特定类创建属性的命令。 在命令中使用的类名必须存在。 以下语句是创建属性命令的基本语法。 以下是有关上述语法中选项的详细信息。 - 定义要在其中创建属性的类。 - 定义属性的逻辑名称。 - 定义您想要创建的属性的类型。 - 定义容器属性类型中使用的容器类型。 - 定义容器属性类型中使用的容器类。 下表提供了属性的数据类型,以便

  • 我正在注入这样一个脚本: 这会生成如下标记: 我更喜欢以下语法: 将选项传递给jQuery DOM元素创建者时是否支持此功能?或者,我应该只使用普通JavaScript来实现这一点吗?

  • 我试图使一个属性文件在Java。可悲的是,当我启动Minecraft(因为这是Forge中的一个mod)时,文件不会创建。我会非常感谢任何帮助我的人。下面是代码:

  • 只有当新项目的日期比现有项目更近时,我才想更新DynamoDB中的项目。目前,我正在查询现有项目,在代码中进行比较,然后写入数据库。我想知道是否有办法让DynamoDB为我进行检查。我已经研究过使用预期,但是它的比较运算符需要引入一个参数,这违背了目的,因为这意味着无论如何都必须查询现有项目。 我和8Java一起工作。

  • 出于业务逻辑的原因,我希望能够创建一个具有属性的对象。但我显然不能 因为是在Python中具有特殊含义的保留关键字。但是,使用或动态获取属性也存在同样的问题。我可以这样做吗,还是必须让属性名?