我有2个条件可比较2个模型(如果存在或不存在)以显示不同的消息。
对象this.realEstateProjectCurrentProduct
保持不变,属性housingTax
或propertyTax
不同,其他情况保持不变。
if (this.realEstateProjectCurrentProduct.housingTax) {
return this.housingTax = `${this.realEstateProjectCurrentProduct.housingTax} ${this.$translate.instant('currencySymbols.euro')}`
} else {
return this.housingTax = 'No data'
}
if (this.realEstateProjectCurrentProduct.propertyTax) {
return this.propertyTax = `${this.realEstateProjectCurrentProduct.propertyTax} ${this.$translate.instant('currencySymbols.euro')}`
} else {
return this.propertyTax = 'No data'
}
如何改善这两个条件,因为它们与Lodash或ecmaScript 2015之间存在太多相似之处
答案 0 :(得分:1)
虽然不是最安全的方法(魔术字符串通常很糟糕),但您可以尝试提取实际功能并传入要更改的属性的名称。
<div class="container">
<p>some info goes here</p>
<span class="parent"><span class="child"></span></span>
</div>
如果您希望将来有更多,请考虑一个数组:
function processTax(taxType) {
if (this.realEstateProjectCurrentProduct[taxType]) {
this[taxType]= `${this.realEstateProjectCurrentProduct[taxType]} ${this.$translate.instant('currencySymbols.euro')}`
} else {
this[taxType]= 'No data'
}
}
processTax('housingTax');
processTax('propertyTax');
答案 1 :(得分:1)
您可以使用属性解构,例如:
let { housingTax, propertyTax } = this.realEstateProjectCurrentProduct;
housingTax = housingTax ? `${housingTax} ${this.$translate.instant('currencySymbols.euro')}`: 'no data'
propertyTax = propertyTax ? `${propertyTax} ${this.$translate.instant('currencySymbols.euro')}` : 'no data'