2016-05-25 7 views
0

こんにちは、私は3つの条件を確認する必要があります、if else ifステートメント以外のコードを最適化する方法はありますか?私が3つの組み合わせをすべてチェックしているなら、より多くの行のコードに行くなら、すべての条件をチェックするためのより良いオプションがあります。誰でもこのコードを最適化するために私を助けることができます。else ifステートメントを最適化する方法

if (req.body.officeId === "null" && req.body.branchId === "null" && req.body.productId === "null") { 
    updatedTestData = _.omit(req.body, ['officeId', 'branchId', 'roomId']); 
    updatedTestData.officeId = null; 
    updatedTestData.office = {}; 
    updatedTestData.branchId = null; 
    updatedTestData.branch = {}; 
    updatedTestData.productId = null; 
    updatedTestData.product = {}; 

} else if (req.body.officeId === "null" && req.body.branchId === "null" && !req.body.productId === "null") { 
    updatedTestData = _.omit(req.body, ['officeId', 'branchId']); 
    updatedTestData.officeId = null; 
    updatedTestData.office = {}; 
    updatedTestData.branchId = null; 
    updatedTestData.branch = {}; 

} 
+1

私はあなたが 'やりたいとは思わないreq.body.productId === "ヌル"' – noisypixy

答えて

3

使用Array.prototype.every()

var condition = [ req.body.officeId, req.body.branchId, req.body.productId] 

if (condition.every(item => item === "null") { 

    // do some work 

} 

if (condition.every(item => item !== "null") { 

    // do other work 

} 

everyはあなたが唯一の彼らは失敗するまで、あなたの条件を通過する必要がありますので、それは、false値を検出した場合、自動的に終了します。

+0

OPのコードは何もしない場合req.body.officeIdまたはREQどちらか!。 body.branchIdはnullではありません。あなたのコードではそうではありません。なぜなら、3つすべてがnullでないなら、2番目のブロックが実行されるからです。 – haggisandchips

0

これは

if (req.body.officeId === "null" && req.body.branchId === "null") { 

    if (req.body.productId === "null"){ 
     updatedTestData = _.omit(req.body, ['officeId', 'branchId', 'roomId']); 
     updatedTestData.officeId = null; 
     updatedTestData.office = {}; 
     updatedTestData.branchId = null; 
     updatedTestData.branch = {}; 
     updatedTestData.productId = null; 
     updatedTestData.product = {}; 
     return 
    } 

    updatedTestData = _.omit(req.body, ['officeId', 'branchId']); 
    updatedTestData.officeId = null; 
    updatedTestData.office = {}; 
    updatedTestData.branchId = null; 
    updatedTestData.branch = {}; 


} 
2

Aわずかに良いバージョンに役立つかもしれない:場合は、外にそれらを取り出すことができるように

チェックの
if(req.body.officeId === "null" && req.body.branchId === "null"){ 
    if(req.body.productId === "null"){ 
     //your first code block 
    }else{ 
     //your second code block 
    } 
} 
0

2はifとelseifを両方に共通しているの...

if (req.body.officeId === "null" && req.body.branchId === "null") { 
    if (req.body.productId === "null") { 
    updatedTestData = _.omit(req.body, ['officeId', 'branchId', 'roomId']); 
    updatedTestData.officeId = null; 
    updatedTestData.office = {}; 
    updatedTestData.branchId = null; 
    updatedTestData.branch = {}; 
    updatedTestData.productId = null; 
    updatedTestData.product = {}; 
    } else { 
    updatedTestData = _.omit(req.body, ['officeId', 'branchId']); 
    updatedTestData.officeId = null; 
    updatedTestData.office = {}; 
    updatedTestData.branchId = null; 
    updatedTestData.branch = {}; 
    } 
} 
0
var array = ['officeId', 'branchId']; 
var body = req.body; 
var office = body.officeId; 
var branch= body.branchId; 
var product= body.productId; 
if(office === 'null' && branch === 'null') { 
    if(product !== 'null') { 
     array.push('roomId'); 
     updatedTestData = _.omit(body, array); 
     testChange(body, 'product', updatedTestData); 
    } else { 

    } 
} 

testChange(req.body, 'office', updatedTestData); 
testChange(req.body, 'branch', updatedTestData); 

function testChange(object, key, toChange) { 
    if(object[key] === 'null') { 
     toChange[key + 'Id'] = null; 
     toChange[key] = {}; 
    } 
} 
0

つ以上approa ES 5中のCHは:

var isNull = function(items) { 
     if (items === null) return true; 
     if (items.length) { 
       return items.reduce(
          function(p, c){ 
          return ((c===null) && p); 
          }, true); 
     } 

     return false; 
} 

if (isNull([req.body.officeId, 
       req.body.branchId, 
       req.body.productId])) 
{ 
    // 
} 
else if (isNull([req.body.officeId, 
       req.body.branchId] && !isNull(req.body.productId)) 
{ 
    // 
} 
関連する問題