"If" consolidation/avoiding 嵌套

"If" consolidation/avoiding nesting

我真的想避免在这个代码片段中嵌套...

deal_trade_in_model_1 = document.getElementById('deal_trade_in_model_1').value;
deal_trade_in_amount_1 = document.getElementById('deal_trade_in_amount_1').value;
if (typeof deal_trade_in_model_1 !== 'undefined' && deal_trade_in_model_1 !== null) {
    console.log(deal_trade_in_amount_1);
    console.log(deal_trade_in_model_1);
        if (deal_trade_in_model_1 !== null || deal_trade_in_model_1 !== "") {
            if (deal_trade_in_amount_1 == null || deal_trade_in_amount_1 == "") {
                console.log('entered into function');
                document.getElementById("deal_trade_in_model_1").value = "";
                document.getElementById("deal_trade_in_amount_1").value = "";
    }
}
}

基本上,此函数的作用是获取两个字段的值...关于它们的信息以及我想对它们执行的操作:

1) 它们不是必需的

2)如果其中一项填写,则另一项必须填写

3)如果只填了其中一个,用户点击提交,调用了这部分函数,​​我想把这两个的值都删掉。

我试过

的复合

&& (and)

|| (or)

buttttt 可恶的是它没有用。

主要问题:最有效的摆脱嵌套的最佳方法是什么(我计划这样做两次,只是交换代码)?我希望最好以尽可能少的 IF 语句来完成此操作。

请注意:如果您更改代码很多,我可能不知道您在说什么..请准备好教我或帮助我学习!

听起来您只想在其中一个字段为空时执行某些操作,而不是两个都为空。假设两个元素都是文本字段,.value 将始终是 return 一个字符串。如果字符串为空,则将字符串转换为布尔值会导致 false,否则会导致 true.

所以

Boolean(deal_trade_in_model_1) === Boolean(deal_trade_in_amount_1) 
如果两个字段都有值(都将转换为 true)或两个字段都为空(都转换为 false),

将是 true

因此您的代码可以减少到

var model_1 = document.getElementById('deal_trade_in_model_1');
var amount_1 = document.getElementById('deal_trade_in_amount_1');

if (Boolean(model_1.value) !== Boolean(amount_1.value)) {
    model_1.value = "";
    amount_1.value = "";
}