假设我有
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",
}
答案 0 :(得分:7)
您可以将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);
答案 1 :(得分:0)
const status = null;
{
otherCondition: 1,
status: (status) ? status: false,
}
这将返回
{
otherCondition: 1,
status: false,
}