我在JavaScript中实现了Heap的非递归算法。
使用Result<T, E>
检查排列时,一切都按预期工作。
但是当我尝试将每个排列推送到结果数组时,一切都会崩溃。它只返回填充了最后一次迭代排列的结果。
console.log(arr)
&#13;
答案 0 :(得分:1)
问题是数组只是引用,所以当你推入数组时,你只是推送一个引用。因此,在下一次迭代中,您更新数组,当您查看最终输出时,所有索引都是相同的,因为它是相同的数组。
那你能做什么?克隆它。
allPermutations.push(arr.slice(0));
答案 1 :(得分:0)
是的-这是一个参考问题。替代epascarello的答案:
allPermutations.push([...arr]);