【问题标题】:can i make this into 1 switch case instead of many if else statements我可以把它变成 1 个 switch case 而不是很多 if else 语句
【发布时间】:2020-02-13 13:38:15
【问题描述】:
const ticket = {
                   movie : document.getElementById("movie").value,
                   amount : document.getElementById("amount").value,
               };

这是我的对象,我想验证输入。但我不确定如何将 if-else 语句更改为一个 switch case,因为它有不同的语句。

PS:出于学习目的,我需要使用 javaScript 而不是 jQuery。

if(ticket.movie ===""){
    document.getElementById("warningMovie").innerHTML = "need to choose a movie"
}else{
    document.getElementById("warningMovie").innerHTML = "";
}

if(ticket.amount === ""){
    document.getElementById("warningAmount").innerHTML = "need to choose amount"
}else{
     document.getElementById("warningAmount").innerHTML = "";
}

【问题讨论】:

    标签: javascript if-statement switch-statement


    【解决方案1】:

    这样的?

    我正在使用Object.entriesConditional operator (ternary) 两次 :)

    并将对象的键添加到跨度的 ID - 我可以使用 warningAmount 但我必须将键大写

    注意对象可能是通过循环输入元素创建的

    如果你不喜欢("aeiou".indexOf(item[0].toLowerCase())>=0?"n ":" "),也可以忽略

    const ticket = {
      movie: "",
      amount: 0,
      snack: "Chips",
    };
    
    for (let [key, value] of Object.entries(ticket)) {
      document.getElementById("warning_" + key).innerHTML = 
        value ? "" : 
        "need to choose a"+ ("aeiou".indexOf(key[0].toLowerCase())>=0?"n ":" ") + key
    }
    <span id="warning_movie"></span><br/>
    <span id="warning_amount"></span><br/>
    <span id="warning_snack"></span><br/>

    【讨论】:

    • 不应该以某种方式声明item 吗?我对这种语法有点困惑。 item 代表什么?
    【解决方案2】:

    在这种情况下我会使用三元运算符。例如:

    document.getElementById("warningMovie")
     .innerHTML = ticket.movie ? "" : "need to choose a movie"
    

    【讨论】:

    • 在这种情况下,我仍然需要为每个要显示的警告写一行,对吗?在这种情况下,有没有办法减少重复?在我的原始代码中,我有 6 个 if else 语句看起来非常重复,我希望在这种情况下可以尽量减少重复
    • 为此,您可以使用 mplungjan 给出的方法。
    猜你喜欢
    • 1970-01-01
    • 2020-10-14
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    相关资源
    最近更新 更多