需要通过三元运算符重构if语句
问题描述:
嗨,大家第一次发帖,需要重构最好的方法或解决方案,我认为这是丑陋的,通常没有足够的时间花在它上面。需要通过三元运算符重构if语句
if(textInput.length > 0) {
href = href + '&' + jQuery.param({ text: textInput.val()});
}
if(symbolDropdown.length > 0) {
href = href + '&' + jQuery.param({ symbol: symbolDropdown.val()});
}
任何帮助将非常感谢。
答
你可以简单地做:
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('&'))
答
您可以创建数据的数组和地图jQuery.param
。后来加入&
;
href += '&' + []
.concat(textInput.val() || [], symbolDropdown.val() || [])
.map(a => jQuery.param({ symbol: a }))
.join('&');
+0
第一个值在关键字'text' –
+0
@AP下面,右边。它不应该 –
很好......其他一切都会让它真的很难看...... –
是textInput节点列表吗?我只是想知道什么textInput.length是。 – James
这没什么问题。你为什么认为三元方法会使它更好? –