2017-10-11 81 views
0

我有2個條件比較2個模型,如果它們存在或不顯示不同的消息。 對象this.realEstateProjectCurrentProduct保持不變,它的屬性housingTaxpropertyTax不同,其他情況保持不變。JavaScript/Angular1 - 重構算法/邏輯條件

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' 
} 

如何提高這2個條件,因爲他們之間有太多的相似之處與Lodash或ECMAScript的2015年例如

+0

上面的代碼將永遠不會得到第二if語句,因爲你在賦值之前的所有返回語句 –

回答

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' 
1

雖然不是最安全的方法(魔術字符串是普遍不好),你可以嘗試提取實際的功能和傳遞你想改變的屬性的名稱。

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'); 

如果你希望有更多的未來,考慮一個數組:

['housingTax', 'propertyTax'].forEach(tax => processTax(tax));