构造js对象时如何根据条件分配对象属性?

时间:2019-07-16 21:01:40

标签: javascript arrays lodash

我正在使用lodash _.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),
    };

2 个答案:

答案 0 :(得分:1)

首先创建对象,并在条件为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;
})

答案 1 :(得分:0)

您可以在逻辑短路的情况下使用对象散布。如果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) },
  };
})