在 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/