Javascript 有没有更快的方法来写这个字符串

Javascript 有没有更快的方法来写这个字符串,javascript,arrays,string,projects,Javascript,Arrays,String,Projects,发生的情况是,如果用户单击“获取会话Id”按钮。它显示一个随机字符串,表示sessionId。这个很好用。我的问题是,目前我有5个字符串,分别是“AAA”、“AAB”、“AAC”、“AAD”和“AAE”。现在我想让弦一直延伸到“ZZZ” 要写出从“AAA”到“ZZZ”的所有字符串,我需要一段时间和大量的编码。我想知道的是,有没有一种方法可以显示“AAA”和“ZZZ”之间的所有字符串,而不需要手动输入所有字符串 下面是我的代码: <head> <meta http

发生的情况是,如果用户单击“获取会话Id”按钮。它显示一个随机字符串,表示sessionId。这个很好用。我的问题是,目前我有5个字符串,分别是“AAA”、“AAB”、“AAC”、“AAD”和“AAE”。现在我想让弦一直延伸到“ZZZ”

要写出从“AAA”到“ZZZ”的所有字符串,我需要一段时间和大量的编码。我想知道的是,有没有一种方法可以显示“AAA”和“ZZZ”之间的所有字符串,而不需要手动输入所有字符串

下面是我的代码:

<head>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <title>Create a Session</title>
        <script type="text/javascript">

var randomStrings = [
        "AAA",
        "AAB",
        "AAC", 
        "AAD",
        "AAE",
    ];

    function getSession() {

var randomDiv = document.getElementById("randomStrings");

          randomIndex = Math.round(Math.random()*(randomStrings.length-1));
          newText = randomStrings[randomIndex];
          randomDiv.innerHTML = newText;
}

</head>

<body>
<form action="create_session.php" method="post" name="sessionform">
 <table>
          <tr>
          <th>1: </th>
          <td><input id="sessionBtn" type="button" value="Get Session ID" name="sessionid" onClick="getSession()" /></td>   <!-- Get Session ID here-->
          <td id="randomStrings"></td>
          </tr>
          </table>
</form>
</body>

创建会话
var随机字符串=[
“AAA”,
“AAB”,
“AAC”,
“AAD”,
“AAE”,
];
函数getSession(){
var randomDiv=document.getElementById(“随机字符串”);
randomIndex=Math.round(Math.random()*(randomStrings.length-1));
newText=randomString[randomIndex];
randomDiv.innerHTML=newText;
}
1: 
此功能在以下情况下工作:

function getStrings(){
    var strings = [];
    var start = 65;
    var end = 91;
    for (var a = start; a < end; a++) {
            for (var b = start; b < end; b++) {
                    for (var c = start; c < end; c++) {
                            strings.push(String.fromCharCode(a)+String.fromCharCode(b)+String.fromCharCode(c));
                    }
            }
    }
    return strings;
}
函数getStrings(){ var字符串=[]; var start=65; var-end=91; 对于(变量a=开始;a<结束;a++){ 用于(变量b=开始;b<结束;b++){ for(var c=start;c 但是Jonathan Newmuis的答案要好得多。

此函数可以工作:

function getStrings(){
    var strings = [];
    var start = 65;
    var end = 91;
    for (var a = start; a < end; a++) {
            for (var b = start; b < end; b++) {
                    for (var c = start; c < end; c++) {
                            strings.push(String.fromCharCode(a)+String.fromCharCode(b)+String.fromCharCode(c));
                    }
            }
    }
    return strings;
}
函数getStrings(){ var字符串=[]; var start=65; var-end=91; 对于(变量a=开始;a<结束;a++){ 用于(变量b=开始;b<结束;b++){ for(var c=start;c 但是Jonathan Newmuis的答案要好得多。

试试这个

var strings=[];
对于(变量a=0x41;a<0x5b;a++){
对于(变量b=0x41;b<0x5b;b++){
对于(变量c=0x41;c<0x5b;c++){
推(
String.fromCharCode(a)+
String.fromCharCode(b)+
fromCharCode(c));
}
}
}
试试这个

var strings=[];
对于(变量a=0x41;a<0x5b;a++){
对于(变量b=0x41;b<0x5b;b++){
对于(变量c=0x41;c<0x5b;c++){
推(
String.fromCharCode(a)+
String.fromCharCode(b)+
fromCharCode(c));
}
}
}

对于您在这里所做的工作,生成所有可能的字符串,然后随机选择一个字符串的成本将远远高于必要的成本。如果这样做,您将不得不生成17576(26^3)个字符串,只需生成一个随机的三字母字符串。相反,您可以只生成一个随机字符串,一次生成一个字符

var alphabet = [ "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" ];

function generateRandomString(strLength) {
    var output = "";
    for (var i = 0; i < strLength; i++) {
        var randomIndex = Math.floor(Math.random() * alphabet.length);
        output += alphabet[randomIndex];
    }
    return output;
}

function getSession() {
    var randomDiv = document.getElementById("randomStrings");
    newText = generateRandomString(3);
    randomDiv.innerHTML = newText;
}
var字母表=[“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”];
函数生成器域字符串(strLength){
var输出=”;
对于(变量i=0;i
此解决方案的扩展性也更好。要生成所有可能的字符串并选择一个,您的运行时将是
O(26^n)
,其中n是字符串中的字符数。此解决方案的运行时(逐个字符构建字符串)是
O(n)
,其中n是字符串中的字符数


这意味着,如果您决定需要更多的会话ID(如果更多的用户正在使用您的应用程序),您可以很容易地做到这一点。一个5字符的会话ID需要11881376次迭代,如果您事先构建所有可能的会话ID的话。动态构建一个可能性需要5次迭代。

对于您在这里所做的工作,生成所有可能的字符串,然后随机选择一个字符串要比必要的花费多得多。如果这样做,您将不得不生成17576(26^3)个字符串,只需生成一个随机的三字母字符串。相反,您可以只生成一个随机字符串,一次生成一个字符

var alphabet = [ "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" ];

function generateRandomString(strLength) {
    var output = "";
    for (var i = 0; i < strLength; i++) {
        var randomIndex = Math.floor(Math.random() * alphabet.length);
        output += alphabet[randomIndex];
    }
    return output;
}

function getSession() {
    var randomDiv = document.getElementById("randomStrings");
    newText = generateRandomString(3);
    randomDiv.innerHTML = newText;
}
function randLetter()
{
    return String.fromCharCode(65 + Math.round(Math.random()*25));
}

...

var newText = randLetter() + randLetter() + randLetter();
var字母表=[“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”];
函数生成器域字符串(strLength){
var输出=”;
对于(变量i=0;i
此解决方案的扩展性也更好。要生成所有可能的字符串并选择一个,您的运行时将是
O(26^n)
,其中n是字符串中的字符数。此解决方案的运行时(逐个字符构建字符串)是
O(n)
,其中n是字符串中的字符数

这意味着,如果您决定需要更多的会话ID(如果更多的用户正在使用您的应用程序),您可以很容易地做到这一点。一个5字符的会话ID需要11881376次迭代,如果您事先构建所有可能的会话ID的话。需要5次迭代才能动态构建一种可能性

function randLetter()
{
    return String.fromCharCode(65 + Math.round(Math.random()*25));
}

...

var newText = randLetter() + randLetter() + randLetter();
只需使用这样的函数