如果不存在,如何将key:value对中的值声明为null

时间:2017-11-21 21:51:48

标签: javascript object

我有一个这样的对象:

{
  customer: newCustomer.id,
  coupon: customer.coupon,
  items: [
    {
      plan: customer.plan
     },
  ]
}

customer.coupon可能并不总是存在,当它不存在时,我需要它为null。它不能只是一个空字符串,因为它会引发错误。我试过优惠券:customer.coupon || null但是没有用。

3 个答案:

答案 0 :(得分:0)

试试这个:

{
  customer: newCustomer.id,
  coupon: customer.coupon || null,
  items: [
    {
      plan: customer.plan
     },
  ]
}

如果之前的所有值都为falsy(包括false0null和其他人),则JavaScript可以很容易地获取最后一个值

所以这段代码:

customer.coupon ||空

将使用customer.coupon,但该值为falsy,它将采用null

更新

我刚看到你说这不起作用,你得到了什么错误?

答案 1 :(得分:0)

这不是最干净的解决方案,但这也有效:

if (customer.coupon == undefined) {
  var nullObject = {
    customer: newCustomer.id,
    coupon: null,
    items: [
      {
        plan: customer.plan
       },
    ]
  } 
  return nullObject;
} else {
  var nonNullObject = {
    customer: newCustomer.id,
    coupon: customer.coupon,
    items: [
      {
        plan: customer.plan
       },
    ]
  }
  return nonNullObject;
}

答案 2 :(得分:0)

let newCustomer = {"id":1};
let customer = {"coupon":null,"plan":1};

var obj = {
     customer: newCustomer.id,
     coupon: customer.coupon,
     items: [
       {
         plan: customer.plan
        },
     ]
}
console.log(obj);
if(obj.coupon==null)
   delete obj["coupon"]
console.log(obj);

我得到的节点控制台的结果是

enter image description here