今天做简单的冒泡排序时,由于需要用图示法来展示冒泡排序的过程。于是便对每一次数组位置调换记录了快照,然后在渲染。开始的代码是这样的:
1 | <script> |
这里最后snapshoot
最后的元素都是一个相同的数组:[1,2,3,4,5]
,即排序完成后的arr
,是什么原因导致了这样的结果呢?因为snapshoot
中的arr
都指向同一个数组。
这里的解决方法多种多样,只要解除push
后snapshoot
中元素的指向即可。
如:
1 | snapshoot.push(JSON.parse(JSON.stringify(arr))); |
抑或:
1 | snapshoot.push(arr.concat()); |