dav*_*qet 1 javascript numbers
如果我向函数提供数字,我将如何针对像这样的数字范围进行验证?
1-10 = A
11-20 = B
21-30 = C
...
Run Code Online (Sandbox Code Playgroud)
我知道我可以做一些if陈述来评估这一点,但我正在寻找更优雅的方法,因为问题变得更加复杂,而且我不希望看到讨厌的ifs。
var letter = "";
function getLetter(num) {
if (num >= 1 && num <= 10) {
letter = "A";
} else if (num >= 11 && num <= 20) {
letter = "B";
}
// this eventually gets gross
}
Run Code Online (Sandbox Code Playgroud)
的预期结果getLetter(14)将为"B",并且getLetter(49)将为"E",等等。出于类似原因,案例/切换也不在讨论之列。
任何其他想法都欢迎。
一点关于您的代码
function getLetter(num) {
if (num >= 1 && num <= 10) {
letter = "A";
} else if (num >= 11 && num <= 20) {
letter = "B";
}
// this eventually gets gross
}
Run Code Online (Sandbox Code Playgroud)
这可以简化为
function getLetter(num) {
if (num >= 1) {
if(num <= 10) {
letter = "A";
} else if (num <= 20) {
letter = "B";
}
// this eventually gets gross too
}
}
Run Code Online (Sandbox Code Playgroud)
但:
如果简单到每个字母代表10个值的范围:
function getLetter(num) {
if (num >= 1 && num <= 10) {
letter = "A";
} else if (num >= 11 && num <= 20) {
letter = "B";
}
// this eventually gets gross
}
Run Code Online (Sandbox Code Playgroud)
或按照建议
function getLetter(num) {
if (num >= 1) {
if(num <= 10) {
letter = "A";
} else if (num <= 20) {
letter = "B";
}
// this eventually gets gross too
}
}
Run Code Online (Sandbox Code Playgroud)
function getLetter(num) {
return String.fromCharCode(65 + Math.floor((num - 1) / 10));
}
console.log(getLetter(1));
console.log(getLetter(14));
console.log(getLetter(49));Run Code Online (Sandbox Code Playgroud)
如果范围是连续的,则只需边界之一
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |