假设我有

const {status} = req.body;

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

目前我正在这样做,
const query = {
   otherCondition: 1,
};

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

有什么方法可以使用 ES6 Object 简写的 if 子句来避免这种情况吗?

如果我使用,
const query = {
   otherCondition: 1,
   status,
}

当状态为 undefined 时,生成
{
   otherCondition: 1,
   status: "undefined",
}

最佳答案

您可以将 object spreadshort circuit evaluation 一起使用:

...status && { status }

如果 status 是一个假值,则计算的表达式不会“返回”对象,并且 spread 将忽略它。如果是真实值,短路将“返回”{ status } 对象,并且点差将按正常方式工作:

假的

const {status} = {};

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

console.log(query);


真实的

const {status} = { status: 5 };

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

console.log(query);

关于javascript - ES6 Javascript Shorthand 仅当它是真的时才创建属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51401065/

10-10 11:13