我可以缩短这个Javascript代码吗?

时间:2013-08-22 02:39:52

标签: javascript optimization

我刚刚开始编程,我可以缩短这段代码吗?也许有阵列?感谢。

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 个答案:

答案 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';
}