2017-09-06 2 views
0

Je cette condition que vérifier laquelle de ces 2 propriétés owner et tenant est vrai et attribue une chaîne à this.productStatusReferences selon que owner ou tenant qui est vraiJavaScript - vérifier si la valeur de la propriété est une chaîne vrai et retour

if (this.projectCurrentProduct.occupancyType.owner) { 
    this.productStatusReferences = 'productStatusSale' 
} else if (this.projectCurrentProduct.occupancyType.tenant) { 
    this.productStatusReferences = 'productStatusRent' 
} 

Je suis à la recherche d'une solution plus sophistiquée qui fait le même travail avec Lodash ou es2015 par exemple?

+0

Vous ne savez pas ce que vous demandez. Il n'y a pas grand chose à corriger ici - un ternaire n'est pas en ordre puisqu'il y a deux ifs - un switch pourrait être plus facile à lire – mplungjan

+0

Que devrait-il se passer si ce n'est ni l'un ni l'autre? – Bergi

+0

Vous devez créer une variable pour 'this.projectCurrentProduct.occupancyType'. – Bergi

Répondre

0

Je ne suis pas sûr s'il y a une amélioration à faire ici peut-être que vous pourriez utiliser la vérification du chemin de lodash pour la sécurité et enlever la chaîne si autre. Et comme déjà mentionné dans les commentaires que vous avez besoin d'un cas où les deux ne sont pas définies

if (_.has(this.projectCurrentProduct, 'occupancyType.owner')) { 
    this.productStatusReferences = 'productStatusSale' 
} 
if (_.has(this.projectCurrentProduct, 'occupancyType.tenant')) { 
    this.productStatusReferences = 'productStatusRent' 
} 
if(_.isUndefined(this.productStatusReferences)) 

Une autre amélioration est que vous pouvez pouvez modifier le occupancyType à une propriété si

projectCurrentProduct: {occupancyType:'owner'} 

alors vous pouvez maintenir une carte de toutes sortes et juste le mettre en une seule fois

var prodcutStatusOf = {owner: 'productStatusSale', tenant: 'productStatusRent'}; 
var occupancyType = this.projectCurrentProduct.occupancyType; 
this.productStatusReferences = prodcutStatusOf[occupancyType];