列出x长度的所有组合

时间:2014-07-12 15:05:09

标签: javascript function

我创建了一个应该列出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

每个条目的数组。

为什么这不起作用?

2 个答案:

答案 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;
}