[英]add key value to object conditionally javascript
我有一个像这样的空 object
let queryParams = {}
我想有条件地添加一些对象:
if(status){
//add this
adminapproval:req.body.approvalStatus
}
if(type){
//add this
$or: [
Sequelize.where(Sequelize.fn('concat_ws', Sequelize.col('firstName'), ' ', Sequelize.col('lastName')), {
$like: '%' + keyword + '%'
}),
{ email: { $like: '%' + keyword + '%' } },
{ company: { $like: '%' + keyword+ '%' } },
{ mobileNo: { $like: '%' + keyword+ '%' } },
{ city: { $like: '%' + keyword+ '%' } },
{ country: { $like: '%' + keyword+ '%' } }
]}
如果这两个条件都为真,那么最终的 object 如下所示:
{
adminapproval:req.body.approvalStatus,
$or: [
Sequelize.where(Sequelize.fn('concat_ws', Sequelize.col('firstName'), ' ', Sequelize.col('lastName')), {
$like: '%' + keyword + '%'
}),
{ email: { $like: '%' + keyword + '%' } },
{ company: { $like: '%' + keyword+ '%' } },
{ mobileNo: { $like: '%' + keyword+ '%' } },
{ city: { $like: '%' + keyword+ '%' } },
{ country: { $like: '%' + keyword+ '%' } }
]
}
我的解决方案是将这个单独的 object 放入数组中并在循环中构建 object 但我认为这是一个不好的方法。 有没有其他方法可以做到这一点?
如果要向对象添加新的键值对,只需分配值object.newkey即可,就像对象已经具有该键一样。
let queryParams = {};
if(/*condition*/){
queryParams.adminapproval=req.body.approvalStatus;
}
if(/*condition2*/){
queryParams.key1=value1;
queryParams.key2=value2;
}
希望这就是您想要的。
let queryParams = {
...status && {
adminapproval: req.body.approvalStatus,
},
...type && {
$or: [
Sequelize.where(Sequelize.fn('concat_ws', Sequelize.col('firstName'), ' ', Sequelize.col('lastName')), { $like: '%' + keyword + '%' }),
{ email: { $like: '%' + keyword + '%' } },
{ company: { $like: '%' + keyword+ '%' } },
{ mobileNo: { $like: '%' + keyword+ '%' } },
{ city: { $like: '%' + keyword+ '%' } },
{ country: { $like: '%' + keyword+ '%' } }
]
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.