简化此条件声明

cus*_*ice 0 javascript conditional-statements

我有这个疯狂的条件,我只知道有更好的写作方式.这是伪代码:

if( A && B ){
   console.log( 'do not show' );
}

if( A && C ){
   console.log( 'show' );
}

if( A && D ){
   console.log( 'do not show' );
}

if( A && E ) {
   console.log( 'do not show' );
}
Run Code Online (Sandbox Code Playgroud)

我真的很沮丧.

Pet*_*ete 6

这个怎么样:

if (A) {
   if (B || D || E) {
     console.log( 'do not show' );
   } 
   if ( C ) {
     console.log( 'show' );
   }
}
Run Code Online (Sandbox Code Playgroud)

如果你真的想为每个条件指定单独的任务,那么你可以使用它,但是如果你的任务只是上面的代码,那就太复杂了.

var A = C = true;
var B = D = E = false;

function doWhen( cond, fn ) {
    if ( cond === true ) {
        return ( typeof fn === 'function' ? fn() : fn );
    }
    return undefined;
}

doWhen(A, function() {
    [ [B, function() { console.log('b message') }], 
      [C, function() { console.log('c message') }], 
      [D, function() { console.log('d message') }], 
      [E, function() { console.log('e message') }] ]
        .forEach(function(cond) {
            doWhen.apply(null, cond);
        });
});
Run Code Online (Sandbox Code Playgroud)