Javascript堆的算法(非递归)

时间:2016-09-22 20:27:07

标签: javascript

我在JavaScript中实现了Heap的非递归算法。 使用Result<T, E>检查排列时,一切都按预期工作。 但是当我尝试将每个排列推送到结果数组时,一切都会崩溃。它只返回填充了最后一次迭代排列的结果。

&#13;
&#13;
console.log(arr)
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

问题是数组只是引用,所以当你推入数组时,你只是推送一个引用。因此,在下一次迭代中,您更新数组,当您查看最终输出时,所有索引都是相同的,因为它是相同的数组。

那你能做什么?克隆它。

allPermutations.push(arr.slice(0));

答案 1 :(得分:0)

是的-这是一个参考问题。替代epascarello的答案:

allPermutations.push([...arr]);