有条件地将javascript添加到对象的键值

时间:2018-05-04 04:18:05

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

如果两个条件都为真,则最终对象如下所示:

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

我的解决方案是将这个单独的对象放入数组并在aloop中构建对象,但我认为这是一个糟糕的方法。还有其他办法吗?

1 个答案:

答案 0 :(得分:1)

如果要向对象添加新的键值对,可以通过赋值object.newkey来完成,就像对象已经拥有该键一样。

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

希望这就是你要找的东西。