Javascript 测试所有组合a-z、a-z、0-9

Javascript 测试所有组合a-z、a-z、0-9,javascript,for-loop,combinations,alphabet,Javascript,For Loop,Combinations,Alphabet,我需要检查所有a-z组合,字符串长度为2。 因此,示例输出为: aa ab 交流电 公元 ae 等等 我一直在尝试使用for循环,但没有成功。这就是我得到的: var length = 2; var password = []; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for(var l = 0; l < length; l++) { for(var c =

我需要检查所有a-z组合,字符串长度为2。 因此,示例输出为:

aa ab 交流电 公元 ae 等等

我一直在尝试使用for循环,但没有成功。这就是我得到的:

var length = 2;
var password = [];
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

for(var l = 0; l < length; l++)
{
    for(var c = 0; c < 62; c++)
    {
        password[c] = possible.charAt(c);
        document.getElementById("code").innerHTML = password;
    }
}
var长度=2;
var密码=[];
var-mablue=“ABCDEFGHIJKLMNOPQRSTUVXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789”;
对于(变量l=0;l
这对你有用吗

var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for(var x of possible){
    for(var y of possible){
        console.log(x+y);
    }
}

var长度=2;
var-mablue=“ABCDEFGHIJKLMNOPQRSTUVWXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789”。拆分(“”);
控制台日志(联合收割机(长度));
功能组合(长度、级别、上一个)
{
风险等级=等级| | 1;
var previous=previous | |可能;
var-ret=[];
上一页地图(功能(el){
可能。映射(函数(字母){
返回推送(el+字母);
});
});
如果(标高<长度-1)ret=联合收割机(长度,标高+1,ret);
返回ret;
}

它返回一个组合数组,但是像这样将它连接到字符串中并不困难
警报([1,2,3])。连接(',')
。它适用于任何长度(当然,这需要越来越多的时间,因为数组中的元素数将等于
可能的.length^ length
。对于
可能的.length=62
length=2
有3844个组合。对于
length=4
您将使用14776336个组合“终止/挂起”浏览器选项卡).

可能是这样的:

var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(''),
    length = 2,
    i = 0,
    j = 0,
    step,
    comb;

for (i; i < possible.length; i++) {
    step = possible[i];
    console.log("==============" + step + "==============");
    for (j; j < possible.length; j++) {
        comb  = step + '' + possible.slice(j, j + (length - 1)).join('');
        console.log(comb);
    }
    j = 0;
}
var-mablue=“abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzo123456789”。拆分(“”),
长度=2,
i=0,
j=0,
步
梳子;
对于(i;i<可能的.length;i++){
步骤=可能的[i];
console.log(“======================”+步骤+“=========================”);
对于(j;j<可能的长度;j++){
comb=step+''+可能。切片(j,j+(长度-1))。连接('';
控制台日志(comb);
}
j=0;
}
t检查以下内容:


注:不要尝试。:)

循环使用2。一个代表第一个字母,一个代表第二个字母。试一试,然后带着你试过的回来。你能展示一下你的尝试吗?嗯,我没走多远,就卡住了。我不想对这样的循环使用两个,因为我希望以后能够更改长度。可能会对您有所帮助。
我不想对这样的循环使用两个
那么递归就是您的方向。
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(''),
    length = 2,
    i = 0,
    j = 0,
    step,
    comb;

for (i; i < possible.length; i++) {
    step = possible[i];
    console.log("==============" + step + "==============");
    for (j; j < possible.length; j++) {
        comb  = step + '' + possible.slice(j, j + (length - 1)).join('');
        console.log(comb);
    }
    j = 0;
}
var passwords = function(chars, length){
    var index=[];
    chars = chars.split("");

    (function loop(base, i){
        for(var k=0; k< chars.length; k++) {
            if(i>1) loop(base+chars[k], i-1);
            else index.push(base+chars[k]);
        }
    })("", length);

    return index;
}

var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var length = 2;
passwords(possible, length);
var libraryOfBabel = passwords("abcdefghijklmnopqrstuvwxyz ,.", 1312000);