javascript 按确定的计数进行分组

标签 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]

顺序不敏感。

最佳答案

这实际上是一道组合题。您问的是组合具有 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”方法可以做到这一点。

关于javascript 按确定的计数进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51298608/

相关文章:

javascript - 如何在点击事件上提醒 colspan 值

javascript - 使用 LODASH 比较 2 个数组来查找缺失的信息

javascript - 将 Redux Store 中的数据存储在另一个数据结构中

javascript - 以html形式一次删除两个动态字段

javascript - 在 ASP.NET 中使用 javascript 进行检查时,如何传递复选框的值和相应的名称?

javascript - 为什么使用 document.getElementByID 获取表单会阻止alert() 触发?

javascript - 将js对象转为html

javascript - 我可以使用 LoDash 将大型 json 对象(来自 REST 服务)映射到较小的对象吗?

javascript - 使用 Lodash 和 React 对数字字符串进行排序?

javascript - 在 Lodash 中根据条件合并两个 JSON 数组