我需要检查所有组合a-z,字符串长度为2。 因此,示例输出将是:
AA AB AC 广告 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;
}
}
答案 0 :(得分:3)
t查看:http://jsfiddle.net/n0m4wvpq/
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);
有趣的事实:
此功能可用于生成Jorge Louis Borges "Library of Babel":
var libraryOfBabel = passwords("abcdefghijklmnopqrstuvwxyz ,.", 1312000);
PS:不要试试。 :)
答案 1 :(得分:0)
这对你有用吗?
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for(var x of possible){
for(var y of possible){
console.log(x+y);
}
}
答案 2 :(得分:0)
var length = 2;
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split('');
console.log(combine(length));
function combine(length, level, previous)
{
var level = level || 1;
var previous = previous || possible;
var ret = [];
previous.map(function(el) {
possible.map(function(letter) {
ret.push(el + letter);
});
});
if (level < length - 1) ret = combine(length, level + 1, ret);
return ret;
}
它返回组合数组,但是将它加入字符串并不困难,就像这个alert([1,2,3].join(','))
一样。它适用于任何长度(当然,因为数组中的元素数量将等于possible.length ^ length
,因此需要花费越来越多的时间。对于possible.length = 62
和length = 2
,有3844种组合。对于length = 4
,您将使用14776336组合“杀死/挂起”您的浏览器标签页。)
答案 3 :(得分:0)
也许是这样的:
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;
}