1

java脚本中'switch'语句中的'case'语句有问题。我的问题是如何在“case”语句中编写多个数字并节省为每个数字编写多个命令的所有工作,我会尝试更好地解释自己。我想在案例陈述中写下数字 10-14 (10,11,12,13,14)。我该怎么写?感谢您的帮助,并为我糟糕的英语感到抱歉。

name = prompt("What's your name?")  
switch (name)  
{  
    case "Ori":  
        document.write("<h1>" + "Hello there Ori" + "<br>")  
        break;  

    case "Daniel":  
        document.write("<h1>" + "Hi, Daniel." + "<br>")  
        break;  

    case "Noa":  
        document.write("<h1>" + "Noa!" + "<br>")  
        break;  

    case "Tal":  
        document.write("<h1>" + "Hey, Tal!" + "<br>")  
        break;  

    default:  
        document.write("<h1>" + name + "<br>")  
}  
age = prompt ("What's your age?")
switch (age)
{
case  "10":
document.write("you are too little" + name)
break;

case "14":
document.write("So , you are in junior high school" + name)
break;

case  "18":
document.write("You are a grown man" + name)
break;

default:
document.write("That's cool" + name)
break;
}
4

5 回答 5

2

看看这个答案在 JavaScript 中打开整数范围

总之,你可以这样做

var x = this.dealer;
switch (true) {
    case (x < 5):
        alert("less than five");
        break;
    case (x > 4 && x < 9):
        alert("between 5 and 8");
        break;
    case (x > 8 && x < 12):
        alert("between 9 and 11");
        break;
    default:
        alert("none");
        break;
}

但这违背了 switch 语句的目的,因为您可以链接 if-else 语句。或者你可以这样做:

switch(this.dealer) {
        case 1:
        case 2:
        case 3:
        case 4:
            // Do something.
            break;
        case 5:
        case 6:
        case 7:
        case 8:
            // Do something.
            break;
        default:
            break;
    }
于 2013-09-19T17:03:33.463 回答
0

使用这个,如果你不提供break,那么控制就会下降,这样你就可以匹配switch中的一组数字。

case 10:
case 11:
case 12:
case 14:
case 15: document.write("i am less than or equal to 15");break;
于 2013-09-19T17:01:42.030 回答
0

假设您想打开数字 10-14 (10,11,12,13,14),您可以将这些案例链接在一起:

switch(number) {
  case 10: 
  case 11: 
  case 12:
  case 13:
  case 14:
    alert("I'm between 10 and 14");
    break;
  default:
    alert("I'm not between 10 and 14");
    break;
}
于 2013-09-19T17:03:00.147 回答
0

您可以简单地省略该break;语句。

switch (2) {
    case 1: case 2: case 3:
        console.log('1 or 2 or 3');
        break;
    default:
        console.log('others');
        break;
}

我想稍微玩一下这个概念,我不推荐这种方法,但是你也可以依赖一个函数来为你创建一个控制流函数。这只是允许一些语法糖。

var createCaseFlow = (function () {
    var rangeRx = /^(\d)-(\d)$/;

    function buildCases(item) {
        var match = item.match(rangeRx),
            n1, n2, cases;

        if (match) {
            n1 = parseInt(match[1], 10);
            n2 = parseInt(match[2], 10);
            cases = [];

            for (; n1 <= n2; n1++) {
                cases.push("case '" + n1 + "':");
            }

            return cases.join('');
        }

        return "case '" + item + "':";
    }

    return function (cases, defaultFn) {
        var fnStrings = ['switch (value.toString()) { '],
            k;

        for (k in cases) {
            if (cases.hasOwnProperty(k)) {
                fnStrings.push(k.split(',').map(buildCases).join('') + "return this[0]['" + k + "'](); break;");
            }
        }

        defaultFn && fnStrings.push('default: return this[1](); break;');

        return new Function('value', fnStrings.join('') + '}').bind(arguments);
    };

})();

var executeFlow = createCaseFlow({
        '2-9': function () {
            return '2 to 9';
        },
        '10,21,24': function () {
            return '10,21,24';
        }
    },
    function () {
        return 'default case';
    }
);

console.log(executeFlow(5)); //2 to 9
console.log(executeFlow(10)); //10,21,24
console.log(executeFlow(13)); //default case
于 2013-09-19T17:03:30.377 回答
-1

你已经得到了一些关于如何完成这项工作的答案。但是,我想指出更多的事情。首先,就个人而言,我不会为此使用 switch/case 语句,因为有很多类似的情况——经典的 if/elseif/else 链在这里感觉更合适。

根据用例,您还可以提取一个函数,然后使用您的开关/案例(当然,使用更有意义的名称和值):

function getCategory (number) {
    if(number > 20) {
        return 3;
    }
    if(number > 15) {
        return 2;
    }
    if(number > 8) {
        return 1;
    }

    return 0;
} 

switch( getCategory( someNumber ) ) {
    case 0:
        // someNumber is less than or equal to 8
        break;
    case 1:
        // someNumber is any of 9, 10, 11, 12, 13, 14, 15
        break;
    // ...
}

如果间隔是等距的,你也可以这样做:

switch( Math.floor( someNumber / 5 ) ) {
    case 0:
        // someNumber is any one of 0, 1, 2, 3, 4
        break;
    case 1:
        // someNumber is any one of 5, 6, 7, 8, 9
        break;
    // ...
}

此外,应该注意的是,有些人认为 switch/case 语句带有失败(=break;为 come case 省略语句)是不好的做法,尽管其他人认为它非常好。

于 2013-09-19T17:11:28.373 回答