我很了解这个网站,但是我没有找到包含重复元素的答案。例如,给定以下数组:
[1,2,3,4]
有一个长度为3的函数,应该生成使用每个数字超过一次的这些数字的每个可能组合的列表:
[
[1,1,1],
[1,1,2],
[1,1,3],
...
[4,4,2],
[4,4,3],
[4,4,4]
]
我只是无法理解我应该使用哪个算法。 我不期望得到源代码的答案,但是希望能得到正确方向的指引。
我已经尝试使用reduce函数,像这样:
const arr = [1, 2, 3, 4]
const len = 3
arr.reduce((acc, n) => {
for (let i = 0; i < len; i++) {
acc.push(/* ???? */)
}
return acc
}, [])
但我真的不知道该如何继续。
值得一提的是,理想情况下,我希望尽可能高效地完成这件事。