例如,这是 5 选择 2:
var array = [0,1,2,3,4];
var result = array.flatMap(
(v, i) => array.slice(i+1).map(w => [v, w])
);
console.log(result);
我怎样才能使用这种方法做 5 选择 3?
最佳答案
只需添加另一层嵌套:
var array = [0,1,2,3,4];
var result = array.flatMap((v, i) =>
array.slice(i+1).flatMap((w, j) =>
array.slice(i+1+j+1).map(u =>
[v, w, u]
)
)
);
console.log(result);
在这一点上,使用递归可能更容易:function choose(arr, k, prefix=[]) {
if (k == 0) return [prefix];
return arr.flatMap((v, i) =>
choose(arr.slice(i+1), k-1, [...prefix, v])
);
}
console.log(choose([0,1,2,3,4], 3));
关于javascript - 您可以使用 Array.flatMap 在 Javascript 中返回 n 个选择 k 个组合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64414816/