Javascript 在构造js对象时,如何基于条件进行对象属性分配?

Javascript 在构造js对象时,如何基于条件进行对象属性分配?,javascript,arrays,lodash,Javascript,Arrays,Lodash,我正在使用lodash uz.map,试图根据条件分配变量值,所以在下面的代码中,我只想在oldDrugPrice.mailPrice中有对象时调用convertPrice。我们如何完成这项任务 如果oldDrugPrice没有mailPrice,则不希望在对象中添加mailPrice main.js return _.map(cvsResponse, function(oldDrugPrice) { return { isBrand: oldDrugPrice

我正在使用lodash uz.map,试图根据条件分配变量值,所以在下面的代码中,我只想在oldDrugPrice.mailPrice中有对象时调用convertPrice。我们如何完成这项任务

如果oldDrugPrice没有mailPrice,则不希望在对象中添加mailPrice

main.js

return _.map(cvsResponse, function(oldDrugPrice) {
    return {
      isBrand:        oldDrugPrice.brand,
      drugForm:       capitalizeWords(oldDrugPrice.drugForm),
      mailPrice:      convertPrice(oldDrugPrice.mailPrice, version),
    };

首先创建对象,如果条件为true,则添加属性,然后返回对象

return _.map(cvsResponse, function(oldDrugPrice) {

  const obj = {
    isBrand: oldDrugPrice.brand,
    drugForm: capitalizeWords(oldDrugPrice.drugForm)
  };

  if (typeof oldDrugPrice.mailPrice === 'object') {
    obj.mailPrice = convertPrice(oldDrugPrice.mailPrice, version),
  }
  return obj;
})

可以将对象扩展与逻辑短路一起使用。如果
oldDrugPrice.mailPrice
不是
undefined
,则它将使用
mailPrice
属性将对象扩展,并将其添加到最终对象中。如果
..isUndefined()
返回
true
,则将应用空对象

_.map(cvsResponse, function(oldDrugPrice) {
  return {
    isBrand: oldDrugPrice.brand,
    drugForm: capitalizeWords(oldDrugPrice.drugForm),
    ..._.isUndefined(oldDrugPrice.mailPrice) ? 
        {} : { mailPrice: convertPrice(oldDrugPrice.mailPrice, version) },
  };
})