写if else语句的更好方法

0 javascript if-statement

第一次写Javascript.我想知道是否有更短的写法:

<p id="demo"></p>

<script>
    function myFunction() {
    var letter = document.getElementById("myInput").value;
    var text;

    if (letter === "5544") {
        text = "Abar, Marlon 1,800";

    } else if (letter === "5545") {
        text = "Pia, Darla 1,800";  

    } else if (letter === "5546") {
        text = "Salazar, Alex 1,500";   

//etc...

    } else {
        text = "Incorrect Account Number";
    }
document.getElementById("demo").innerHTML = text;
}
</script>
Run Code Online (Sandbox Code Playgroud)

试过地图,但我无法让它工作.

Set*_*hen 5

if用这种方式编写语句的方法并不简单(我假设你要问的是).但是,根据您要检查的内容,可能会有几种不同的方法来编写此内容.

使用Switch语句

在处理letter可能的多个案例时,有一种更清洁的方法.

这将是一个switch声明,它看起来像这样:

var text;

switch (letter) {
    case "5544":
        text = "Abar, Marlon 1,800";
    break;
    case "5545":
        text = "Pia, Darla 1,800"; 
    break;

    // more cases

    default:
        text = "Incorrect Account Number";
    break;
}
Run Code Online (Sandbox Code Playgroud)

if else在某些情况下,这比一个声明好一些.default此处的关键字在声明中充当您的else子句if else.如果您愿意,case可以作为您的不同if陈述.

从本质上讲,switch上面的陈述将落在它定义的每个案例中,直到找到匹配的案例letter(例如"5544").如果没有匹配,则会触及default案例.的break在每个月底关键字case从通过到下一个限定的下降停止的事情case一旦发现匹配.

超过6或7个案例,这种方法可能会很麻烦.

创建一个对象并查找该值

现在,获得所需值的更简单方法是定义一个对象,并根据输入的内容获取值,如下所示:

var letter = document.getElementById('selector').value;
var obj = {
    '5544': 'Abar, Marlon 1,800'
};

if (letter in obj) {
   // do something if found
}
else {
   // do something if not found
}
Run Code Online (Sandbox Code Playgroud)

如果要检查多个值,这可能是获取值的简单方法.

其他想法

作为所有这些的旁注,有一些if称为三元语句的简短语句,您可以在这里找到:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator ..但是,我不建议将它们嵌套,因为它变得非常复杂并且不易读.

结论

所以,重申你的问题的答案:不,没有一个更短的方法来编写if else具有许多值的语句.您可以使用switch语句使其更清晰.如果您要检查多个值,请使用对象查找方法.