2016-11-28 106 views
0

我有一个开关的情况,只有少数两种情况,它们在代码中的差异很小。如何声明全局以最小化代码。如何在switch语句中进行代码优化

这是我的代码。

switch(clickedDataIndex){ 
      case A : 
       var data = record.get(data1); 
       var Object = { 
         'AID':AID, 
         'BID':record.get(BID), 
         'CID':record.get(CID), 
         'DId' : record.get(D1), 
       } 
       if(data){ 
        myFunction(Object); 
       } 
       break 
      case B: 
       var data = record.get(data2); 
       var Object = { 
         'AID':AID, 
         'BID':record.get(BID), 
         'CID':record.get(CID), 
         'DId' : record.get(D12), 
       } 
       if(data){ 
        myFunction(Object); 
       } 
       break; 
     } 

如果您在创建对象时注意到许多属性是相同的。有什么办法可以避免吗?

+0

从这些重复的部分提取功能,并调用它。 –

+0

你能否给出一个建议,你的建议是什么 – David

+0

当然,你的案例应该是这样的:case A:myOtherFunction(data1,'D1'); break;' –

回答

2

您可以创建一个函数来减少代码重复,

function doProcess(data, aId, bId, cId, dId){ 
    var data = record.get(data); 
    var Object = { 
     'AID': aId, 
     'BID':record.get(bId), 
     'CID':record.get(cId), 
     'DId' : record.get(dId), 
    } 
    if(data) myFunction(Object); 
} 

switch(clickedDataIndex) { 
case 'A': 
    doProcess(data1, AID, BID, CID, d1); 
break; 
case 'B': 
    doProcess(data2, AID, BID, CID, D12); 
break; 
} 
+1

感谢它的工作。我用了其他方式,但这也起作用。 – David

0

调用单独的函数doAction()

<script type="text/javascript"> 
function doAction(Data, DId) 
{ 
    var data = record.get(Data);   
    if (data) 
    { 
     var Object = { 
       'AID':AID, 
       'BID':record.get(BID), 
       'CID':record.get(CID), 
       'DId' : record.get(DId), 
     } 

     myFunction(Object); 
    } 
} 

switch(clickedDataIndex) 
{ 
    case A : 
     doAction(data1, D1); 
     break; 
    case B: 
     doAction(data2, D12);  
     break; 
} 
</script>