2016-01-13 51 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; 
}