2016-01-13 50 views
0

我有以下功能,其中我硬代码if条件像'AssignedTo','ClaimStatusId','ClaimTypeId'写一个通用代码

因此,strCondition字符串有任何类似'AssignedTo','ClaimStatusId','ClaimTypeId'的价值观,那么它会被重定向到相应的if条件

function ChangeIDToString(strCondition,id) 
    { 
     if (strCondition.indexOf("AssignedTo") > -1) 
      return GetUserName(id) 
     else if (strCondition.indexOf("ClaimStatusId") > -1) 
      return GetClaimStatus(id) 
     else if (strCondition.indexOf("ClaimTypeId") > -1) 
      return GetClaimType(id);   
     else 
      return id; 
    } 

有没有什么办法可以消除像 这种硬编码值“AssignedTo” 'ClaimStatusId', 'ClaimTypeId'?

+0

strCondition是数组的类型吗? –

+0

在单个参数中传递'id'和'strvalue',然后进行分割。像'ClaimStatusId_ {id}' –

回答

0

这样的方法?

function ChangeIDToString(strCondition,id) 
    { 
     return _func[strCondition](); 
    } 

var _func = { 
    "AssignedTo":function(){ GetUserName(); }, 
    "ClaimStatusId":function(){ GetClaimStatus(); } 
    .... 
} 
+0

仍然有_func中的硬编码文本 – SmartestVEGA

0

您可以尝试使用一个对象来存储字符串值,当然它仍然是硬编码,因为这是不可能的机器的理解是,需要执行“GetUserName()”的时候,条件是“分配给”。

var Conditions = { 
    GetUserName: "AssignedTo", 
    GetClaimStatus: "ClaimStatusId", 
    GetClaimType: "ClaimTypeId" 
} 
function ChangeIDToString(strCondition,id) 
{ 
    if (strCondition.indexOf(Conditions.GetUserName) > -1) 
     return GetUserName(id) 
    else if (strCondition.indexOf(Conditions.GetClaimStatus) > -1) 
     return GetClaimStatus(id) 
    else if (strCondition.indexOf(Conditions.GetClaimType) > -1) 
     return GetClaimType(id);   
    else 
     return id; 
}