简体   繁体   English

有条件地将键值添加到 object javascript

[英]add key value to object conditionally javascript

I have an empty object like this我有一个像这样的空 object

let queryParams = {}

I want to add some objects conditionally to this:我想有条件地添加一些对象:

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+ '%' } }
]} 

If the two conditions are true the final object look like this:如果这两个条件都为真,那么最终的 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+ '%' } }
  ]
}

My solution is to put this individual object into array and build the object in aloop but I think its a bad way.我的解决方案是将这个单独的 object 放入数组中并在循环中构建 object 但我认为这是一个不好的方法。 Is there any other way to do this?有没有其他方法可以做到这一点?

If you want to add a new key value pair to an object you can simply do so by assigning value object.newkey as if the object already had that key. 如果要向对象添加新的键值对,只需分配值object.newkey即可,就像对象已经具有该键一样。

let queryParams = {};
if(/*condition*/){
    queryParams.adminapproval=req.body.approvalStatus;
}
if(/*condition2*/){
    queryParams.key1=value1;
    queryParams.key2=value2;
}

Hope this is what you were looking for. 希望这就是您想要的。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM