微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

生成字母数字序列javascript

我编写了一个非常慢的函数生成从AA000到ZZ999的代码(按顺序而非随机).我已经得出结论,必须有一个更好的方法来做到这一点.有关如何加快速度的任何建议吗?

function generatealphaNumeric(){

theAlphabet = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
resultArrray = [];
resultArrray2 = [];
teller = 0;

for(i in theAlphabet){
    for(x in theAlphabet){
        resultArrray[teller] = theAlphabet[i] + theAlphabet[x];
        teller++;
    }
}
teller = 0;
for(x = 0; x<10; x++){
    for(y = 0; y<10; y++){
        for(z = 0; z<10; z++){
            resultArrray2[teller] = x.toString() + y.toString() +z.toString();
            teller++;
        }
    }
}
teller = 0;
finalArray = [];
for(index in resultArrray){
    for(i in resultArrray2){
        finalArray[teller] = resultArrray[index] + resultArrray2[i];
        teller++;
    }
}
//console.log(resultArrray);
//console.log(resultArrray2);
console.log(finalArray);
}
最佳答案
这应该快得多:

var theAlphabet = ['A','Z'];
var theDigits = ['0','1','2','3','4','5','6','7','8','9'];

var result = [];
for (var i=0 ; i<26 ; i++) {
    var prefix1 = theAlphabet[i];
    for (var j=0 ; j<26; j++) {
        var prefix2 = prefix1 + theAlphabet[j];
        for(var x = 0; x<10; x++){
            var prefix3 = prefix2 + theDigits[x];
            for(var y = 0; y<10; y++){
                var prefix4 = prefix3 + theDigits[y];
                for(var z = 0; z<10; z++){
                   result.push(prefix4 + theDigits[z]);
                }
            }       
        }
    }
}

主要观点:

>一次运行生成所有内容
>尽可能重用部分字符串

但是,我不知道这样详尽的清单是如何有用的.正好有26 * 26 * 1000个不同的代码.因此,不是使用所有代码维护数组,而是简单地构建一个生成所请求的特定代码函数是有意义的:

function getCode(number) {
    var z = number % 10;
    number -= z; number /= 10;
    var y = number % 10;
    number -= y; number /= 10;
    var x = number % 10;
    number -= x; number /= 10;
    var a = number % 26;
    number -= a; number /= 26;
    var b = number;

    return theAlphabet[a] + theAlphabet[b] + theDigits[x] + theDigits[y] + theDigits[z];
}

原文地址:https://www.jb51.cc/js/428963.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐