需要通过三元运算符重构if语句

时间:2017-05-25 15:36:04

标签: javascript jquery ternary-operator

大家好先发帖,需要最好的方法或解决方案来重构一些我觉得很难看的东西,通常没有足够的时间花在它上面。

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

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

任何帮助都会非常感谢。

2 个答案:

答案 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('&'))

答案 1 :(得分:0)

您可以使用数据创建数组并映射jQuery.param。稍后加入&;

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