Javascript 有没有更快的方法来写这个字符串
发生的情况是,如果用户单击“获取会话Id”按钮。它显示一个随机字符串,表示sessionId。这个很好用。我的问题是,目前我有5个字符串,分别是“AAA”、“AAB”、“AAC”、“AAD”和“AAE”。现在我想让弦一直延伸到“ZZZ” 要写出从“AAA”到“ZZZ”的所有字符串,我需要一段时间和大量的编码。我想知道的是,有没有一种方法可以显示“AAA”和“ZZZ”之间的所有字符串,而不需要手动输入所有字符串 下面是我的代码: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
<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;cfunction 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;cvar 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();
只需使用这样的函数