假设我有
const {status} = req.body;
仅当状态具有真实值(
null
或 undefined
或 空字符串 除外)时,我才想在我的查询对象中包含 状态 ,目前我正在这样做,
const query = {
otherCondition: 1,
};
if (status) {
query.status = status;
}
有什么方法可以使用 ES6 Object 简写的 if 子句来避免这种情况吗?
如果我使用,
const query = {
otherCondition: 1,
status,
}
当状态为
undefined
时,生成{
otherCondition: 1,
status: "undefined",
}
最佳答案
您可以将 object spread 与 short 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/