我刚刚开始编程,我可以缩短这段代码吗?也许有阵列?感谢。
function createDragName1(){
var firstName;
var random1 = Math.floor((Math.random()*17)+0);
var name1 = "va";
var name2 = "tuul";
switch(random1){
case 0:
firstName = name1;
break;
case 1:
firstName = name2;
break;
default:
firstName = "Error";
}
var testingName = firstName.substring(0,1).toUpperCase()+firstName.substring(1,6);
return(testingName);
}
答案 0 :(得分:1)
当然,你可以使用地图:
function createDragName1(){
var random1 = Math.floor(Math.random() * 17), // [0, 17)
names = ['Va', 'Tuul']; // title cased names
return names[random1] || 'Error';
}
表达式names[random1] || 'Error'
会返回0 <= random1 < names.length
和'Error'
的名称。
我还通过手动标题大约names
删除了标题案例逻辑。
顺便说一句,在大多数情况下,随机数会超出所需范围,因此您会多次返回Error
。
答案 1 :(得分:0)
假设你想以相同的概率返回“Va”或“Tuul”,并且不想真正想要返回“错误”:
function createDragName1() {
return Math.random() < 0.5 ? "Va" : "Tuul";
}
但是,如果您确实需要原始行为:
function createDragName1() {
var rand = 17 * Math.random();
return rand < 1 ? "Va" : rand < 2 ? "Tuul" : "Error";
}
从数组中挑选随机名称的一般方法是:
var array = ["Va", "Tuul"];
var randomElement = array[0 | (array.length * Math.random())];
(奇怪的表示法0 | x
计算为x
的整数部分,因为按位|
运算符会在必要时将参数转换为整数。)如果您想要扩展范围:
var array = ["Va", "Tuul"];
var randomElementOrError = array[0 | (17 * Math.random())] || "Error";
答案 2 :(得分:0)
function createDragName1(){
var random1 = Math.floor((Math.random()*17)+0);
var firstName = ["va","tuul"][random1];
if(!firstName){
firstName = 'Error';
}
var testingName = firstName.substring(0,1).toUpperCase()+firstName.substr(1);
return(testingName);
}
答案 3 :(得分:0)
我认为你不能比以下更短:
function createDragName1() {
return ['Va', 'Tuul'][Math.floor(Math.random() * 17)] || 'Error';
}