javascript按确定的数量分组

时间:2018-07-12 06:25:06

标签: javascript lodash

在ES6中按计数创建分组数组的最简单方法是什么?

例如,我有一个数组,其中包含4个项目,我希望将这些项目分为3组:

var original = [1, 2, 3, 4]
groupByCount(original, 3)

输出:

[1, 2, 3]
[1, 3, 4]
[1, 2, 4]
[2, 3, 4]
[1]
[2]
[3]
[4]
[1, 2]
[2, 3]
[1, 4]
[2, 4]
[3, 4]
[1, 3]

订单不敏感。

1 个答案:

答案 0 :(得分:3)

这实际上是一个组合问题。您在问什么是将数组与4个项目组合在一起(无重复)的算法。该算法确实解决了您的问题。这是一种解决问题的方法。

function printCombinations(array, k) {
        var combinations = [];
    
        function run(level, start) {
            for (var i = start; i < array.length - k + level + 1; i++) {
                combinations[level] = array[i];
                if (level < k - 1) {
                    run(level + 1, i + 1);
                } else {
                    console.log(combinations.join(" "));
                }
            }
    
        }
        run(0, 0);
    }
    
    function groupByCount(array, length) {
        for (var i = 0; i < length; i++) {
            printCombinations(array, i + 1);
        }
    }
    groupByCount([1,2,3,4], 3)

据我所知,没有“本机ES6”方式可以做到这一点。