鍍金池/ 問答/HTML/ 如何優(yōu)化if...else嵌套

如何優(yōu)化if...else嵌套

if(info.type === 'add') {

    cate === 'A' ?
        // add A
        : cate === 'B' ?
        // add B
            : null;

} else if(info.type === 'update') {

    cate === 'A' ?
        // update A
        : cate === 'B' ?
            // update B 
            : null

}

類似于這種,外面是用的if...else內(nèi)部用的是三元表達(dá)式,還有清晰的方案嗎?
對(duì)于這種多從判斷的嵌套,有沒有一種優(yōu)化的思路呢?

回答
編輯回答
舊顏

cate、type都可擴(kuò)充的形式,結(jié)構(gòu)清晰。

let obj = {
        A: fn,
        B: fn
    },
    type = {
        'type': 1,
        'update': 1,
        'default': 1
    };

// 通用處理
function fn( t, c ) {
    return t + c;
};

obj[ cate ] && obj[ cate ]( info.type || 'default', cate );
2017年6月26日 14:09
編輯回答
心悲涼

單獨(dú)抽象出去寫兩個(gè)方法 一個(gè)add 一個(gè)update

2017年12月10日 11:13
編輯回答
擱淺

要說清晰,我覺得還是原來的程序更清晰。樓上諸位你們自己看看你們的程序,只能說減少了代碼量,或者減少了邏輯判斷相關(guān)的語句而已!清晰?呵呵

2018年4月19日 16:58
編輯回答
尐潴豬
switch (cate) {
    case 'a':
        handlerBala(cate, info)
        break;
    case 'b':
        handlerBala(cate, info)
        break;
}

function handlerBala(cate, info) {
    switch (info.type) {
        case 'add':
            add(cate)
            break;
        case 'update':
            update(cate)
            break;
    }
}
2017年5月5日 13:47
編輯回答
久愛她
  var a = {
  add: function () { },
  update: function () { }
}

a[info.type]()
2018年4月2日 18:29
編輯回答
局外人
switch(`${info.type}_${cate}`) {
    case 'add_A': ..
    ...
}
2017年3月17日 19:59
編輯回答
毀了心
var o = {
_methods : function(a, u) {
var s = a + '_' + u;
return s in this ? this[s] : null;
}, 
add_A : 'addA',
add_B : 'addB',
update_A : 'updateA',
update_B : 'updateB'
};
o._methods(info.type, cate);
2017年4月28日 07:24
編輯回答
懶洋洋
var o={
    add:function(){},
    update:function(){}
}
o[info.type]()
2017年1月15日 06:41