Kam*_*n J 4 javascript ecmascript-6
让我说我有
const {status} = req.body;
Run Code Online (Sandbox Code Playgroud)
我想包括状态在我的查询对象只有在状态有truthy值(比其他null或undefined或空字符串)
目前我正在这样做,
const query = {
otherCondition: 1,
};
if (status) {
query.status = status;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用if子句使用ES6 Object简写来避免这种情况?
如果我用,
const query = {
otherCondition: 1,
status,
}
Run Code Online (Sandbox Code Playgroud)
当状态为时undefined,它会生成
{
otherCondition: 1,
status: "undefined",
}
Run Code Online (Sandbox Code Playgroud)
...status && { status }
Run Code Online (Sandbox Code Playgroud)
如果status是假值,则计算的表达式将不会"返回"对象,并且spread将忽略它.如果它是一个truty值,短路将"返回" { status }对象,并且传播将以正常方式工作:
Falsy
const {status} = {};
const query = {
otherCondition: 1,
...status && { status }
};
console.log(query);Run Code Online (Sandbox Code Playgroud)
Truthy
const {status} = { status: 5 };
const query = {
otherCondition: 1,
...status && { status }
};
console.log(query);Run Code Online (Sandbox Code Playgroud)