我在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;
}
答案 0 :(得分:1)
查看此答案Switch on ranges of integers in 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;
}
答案 1 :(得分:0)
使用此功能,如果你不提供中断,则控制权将会下降,这样你就可以匹配交换机中的一组数字。
case 10:
case 11:
case 12:
case 14:
case 15: document.write("i am less than or equal to 15");break;
答案 2 :(得分: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;
}
答案 3 :(得分: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
答案 4 :(得分:-1)
您已经就如何完成这项工作获得了一些答案。但是,我想指出更多的事情。首先,个人而言,我不会使用开关/案例声明,因为有太多类似的案例 - 经典的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;
// ...
}
另外,应该注意的是,有些人认为转换/案例陈述有堕落(=遗漏break;
陈述的情况)不良做法,尽管其他人觉得这很好。