2017-05-25 107 views
0

嗨,大家第一次发帖,需要重构最好的方法或解决方案,我认为这是丑陋的,通常没有足够的时间花在它上面。需要通过三元运算符重构if语句

if(textInput.length > 0) { 
    href = href + '&' + jQuery.param({ text: textInput.val()}); 
} 

if(symbolDropdown.length > 0) { 
    href = href + '&' + jQuery.param({ symbol: symbolDropdown.val()}); 
} 

任何帮助将非常感谢。

+1

很好......其他一切都会让它真的很难看...... –

+0

是textInput节点列表吗?我只是想知道什么textInput.length是。 – James

+0

这没什么问题。你为什么认为三元方法会使它更好? –

回答

0

你可以简单地做:

href += (textInput.length? 
      `&${jQuery.param({ text: textInput.val()})}`:'' 
     ) + (symbolDropdown.length? 
      `&${jQuery.param({symbol: symbolDropdown.val()})}`:'' 
     ) 

虽然说实话,如果我是重构的代码,我会做这样的事情:

const params = [], escPush = i => params.push(jQuery.param(i)) 

textInput.length && escPush({text: textInput.val()}) 
symbolDropdown.length && escPush({symbol: symbolDropdown.val()})) 

params.length && (href += '&' + params.join('&')) 
0

您可以创建数据的数组和地图jQuery.param。后来加入&;

href += '&' + [] 
    .concat(textInput.val() || [], symbolDropdown.val() || []) 
    .map(a => jQuery.param({ symbol: a })) 
    .join('&'); 
+0

第一个值在关键字'text' –

+0

@AP下面,右边。它不应该 –