Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 何时将组合追加/推送到数组中?_Javascript_Arrays_Function_Combinations - Fatal编程技术网

Javascript 何时将组合追加/推送到数组中?

Javascript 何时将组合追加/推送到数组中?,javascript,arrays,function,combinations,Javascript,Arrays,Function,Combinations,我目前正在使用此代码从一个数组中生成一个数组,该数组包含10个一组的每个可能的数字组合: var Util = function() { }; Util.getCombinations = function(array, size, start, initialStuff, output) { if (initialStuff.length >= size) { output.push(initialStuff); } else { var

我目前正在使用此代码从一个数组中生成一个数组,该数组包含10个一组的每个可能的数字组合:

var Util = function() {
};

Util.getCombinations = function(array, size, start, initialStuff, output) {
    if (initialStuff.length >= size) {
        output.push(initialStuff);
    } else {
        var i;
        for (i = start; i < array.length; ++i) {
            Util.getCombinations(array, size, i + 1, initialStuff.concat(array[i]), output);
        }
    }
}

Util.getAllPossibleCombinations = function(array, size, output) {
    Util.getCombinations(array, size, 0, [], output);
}
我试图做的是,如果组合有一个特定的总数,则只向数组中追加/推送/添加组合。我对javascript有点陌生,我想知道是否有人能告诉我组合在代码中的什么位置被确定并添加到我的数组(输出)


谢谢

通过以下几行将组合添加到结果中:

if (initialStuff.length >= size) {
    output.push(initialStuff);
}
如果要添加其他条件,可以将其放在那里:

if (initialStuff.length >= size) {
    if (someOtherTest(initialStuff)) {
        output.push(initialStuff);
    }
}
请注意,您不想将这两个测试组合到一个测试中

if (initialStuff.length >= size && someOtherTest(initialStuff)) {
    output.push(initialStuff);
}

这是因为循环和递归的
else
子句只应在长度测试失败时执行,它不应依赖于其他标准。

initialStuff.length>=size
。。。它就在(大概)你的代码中
if (initialStuff.length >= size && someOtherTest(initialStuff)) {
    output.push(initialStuff);
}