我创建了一个应该列出x长度的所有数字组合的函数。唯一的问题是它什么都不做,我看不出原因。
功能:
function combos(l) {
var o = '', max = '', tmp = '', out = [];
for(var i=0;i<l.length;i++) {
o+='0';
max+='9';
}
max = +max;
for(var j=0;j<max;j++) {
console.log(o.split('').join(' - '));
tmp = o++;
while ((''+tmp).length != l) {
tmp = '0' + tmp;
}
o = tmp;
out.push(o);
}
return out;
}
combos(2)
的预期输出为:
0 - 0
0 - 1
0 - 2
...
9 - 7
9 - 8
9 - 9
每个条目的数组。
为什么这不起作用?
答案 0 :(得分:1)
如果输入是数字(组合(2))
,请尝试此操作for(var i=0;i<l;i++) {
而不是
for(var i=0;i<l.length;i++) {
答案 1 :(得分:0)
虽然这不能解答您的问题,但您可以简化代码:
String.prototype.lpad = function(length) {
str = this
while (str.length < length)
str = '0' + str;
return str;
}
function combos(l) {
var num = 0;
var str = '0'.lpad(l);
var out = [];
do {
out.push(str);
str = String(++num).lpad(l);
} while (str.length <= l)
return out;
}