开发者

Optimizing the IF condition

  AddPatient = {};
  if(GenderValue === undefined) {
        AddPatient.Gender = ' ';  
    } else {
        AddPatient.Gender = GenderValue;  
    }
    if(DateOfBirthValue === undefined) {
        AddPatient.DateOfBirth = ' ';  
    } else {
        AddPatient.DateOfBirth = DateOfBirthValue;  
    }
    if(SSNValue === undefined) {
        AddPatient.SSN = ' ';  
    } else {
        AddPatient.SSN = SSNValue;  
    }
    if(RaceValue === undefined) {
        AddPatient.Race = ' ';  
    } else {
        AddPatient.Race = RaceValue;  
    }
    if(ReligionValue === undefined) {
        AddPatient.Religion = ' ';  
    } else {
        AddPatient.Religion = ReligionValue;  
    }
    if(CellPhoneValue === undefined) {
        AddPatient.CellPhoneNumber1 = ' ';  
    } else {
        AddPatient.CellPhoneNumber1 = CellPhoneValue;  
    }
    if(HomePhoneValue === undefined) {
        AddPatient.phonenumber1 = ' ';  
    } else {
        AddPatient.phonenumber1  = HomePhoneValue;  
    }
    if(PrimaryPhoneValue === undefined) {
        AddPatient.PrimaryPhoneNumber = ' ';  
    } else {
        AddPatient.PrimaryPhoneNumber = PrimaryPhoneValue;  
    }
    if(EmailValue === undefined) {
        AddPatient.EmailAddress1 = ' ';  
    } else {
        AddPatient.EmailAddress1 = EmailValue;  
    }
    AddPatient.ResidentialAddress = {};
    if(AddressValue === undefined) {
        AddPatient.AddressLine1 = ' ';  
    } else {
        AddPa开发者_如何学JAVAtient.ResidentialAddress.AddressLine1 = AddressValue;  
    }
    if(CityValue === undefined) {
        AddPatient.City = ' ';  
    } else {
        AddPatient.ResidentialAddress.City = CityValue;  
    }
    if(StateValue === undefined) {
        AddPatient.State = ' ';  
    } else {
        AddPatient.ResidentialAddress.State = StateValue;  
    }
    if(ZipValue === undefined) {
        AddPatient.PostalCode = ' ';  
    } else {
        AddPatient.ResidentialAddress.PostalCode = ZipValue;  
    }

Is there any better way to write the same code?


You can write

AddPatient.Gender = GenderValue || " ";

The || operator returns the left-most "truthy" operand, so this will evaluate to " " if GenderValue is "falsy" (such as undefined, false, "", 0, or null)


 function isDefined(value){
     if(value != null)
       return value;
     else
      return ' ';
   }

    AddPatient = {};


AddPatient.Gender =isDefined(AddPatient);

and son on


Here is a suggestion to what you actually asked:

http://jsfiddle.net/mplungjan/b5yRw/

It will of course work with a form instead.

var GenderValue = "F";
var DateOfBirthValue; // undefined
var AddressValue = "some street";   
// var CityValue;  // undeclared


function addItem(obj,varName) {
  obj[varName] = window.hasOwnProperty(varName+"Value")?window[varName+"Value"]||"not set":"not declared";
}

function addItemLoop(obj) {
  for (var o in obj) {
    if (typeof obj[o] === 'object') {
      addItemLoop(obj[o]);
    }
    else {
      addItem(obj, o);
    }
  }
}

AddPatient = {
  Gender : " ",
  DateOfBirth: " ",
  ResidentialAddress : {
    Address:" ",
    City: " "
  }
}
addItemLoop(AddPatient);

document.write("<br/>Gender (F):"+AddPatient.Gender);
document.write("<br/>DOB (not set):"+AddPatient.DateOfBirth);
document.write("<br/>ResidentialAddress Address (some street):"+AddPatient.ResidentialAddress.Address);
document.write("<br/>ResidentialAddress City (not declared):"+AddPatient.ResidentialAddress.City);

Previous answer

Not better but shorter using the ternary operator

AddPatient.Gender = (GenderValue === undefined)? " ":GenderValue;  

or shortcut

AddPatient.Gender = GenderValue || " ";

Note - In the shortcut you WILL get a space if value is 0

In EITHER you will get an error if GenderValue has not been declared. So somewhere you need a var GenderValue;

Example:

var b="hello", c;
var a = {}
a.x = b||"no b"
a.y = (c===undefined)? "no c here":c
a.z = c || "no c here either" 
alert(a.x)
alert(a.y)
alert(a.z)


Here's one option:

function SetOrDefault(value, property) {
  if (typeof(value) == 'undefined' || value == null) {
    property = ' ';
  }
  else {
    property = value;
  }
}

And then call it like this:

SetOrDefault(GenderValue, AddPatient.Gender);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜