0

我刚开始编程,我可以让这段代码更短吗?也许有一个数组?谢谢。

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);

}
4

4 回答 4

1

当然,您可以使用地图:

function createDragName1(){
    var random1 = Math.floor(Math.random() * 17), // [0, 17)
    names = ['Va', 'Tuul']; // title cased names

    return names[random1] || 'Error';
}

if和else表达式names[random1] || 'Error'返回一个名称。0 <= random1 < names.length'Error'

我还通过手动标题大小写删除了标题大小写逻辑names

顺便说一句,在大多数情况下,随机数将超出所需范围,因此您将返回Error很多次。

于 2013-08-22T02:44:29.747 回答
0

假设您想以相等的概率返回“Va”或“Tuul”,并且不想返回“Error”:

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";
于 2013-08-22T02:45:10.863 回答
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);

}
于 2013-08-22T02:46:20.760 回答
0

我不认为你可以让它比:

function createDragName1() {
    return ['Va', 'Tuul'][Math.floor(Math.random() * 17)] || 'Error';
}
于 2013-08-22T02:56:34.570 回答