Javascript 在构造js对象时,如何基于条件进行对象属性分配?
我正在使用lodash uz.map,试图根据条件分配变量值,所以在下面的代码中,我只想在oldDrugPrice.mailPrice中有对象时调用convertPrice。我们如何完成这项任务 如果oldDrugPrice没有mailPrice,则不希望在对象中添加mailPrice main.jsJavascript 在构造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
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) },
};
})