今天在用回溯算法解决最大花费金额问题时,发现一个js常规的错误示范,在进行数组的回溯时,我们经常会使用数组的push方法,但数组的push方法是一个浅拷贝问题,如果push的是一个对象,那么push的不是对象的值,而是对象的引用,在我们进行回溯的撤销操作时,就改变了push对象的值,因为是浅拷贝,所以原先push的值也会被改变。
解决办法:
使用JSON
的方法完成深拷贝
,先使用JSON.stringify()
将JS
对象转换为JSON
字符串,在使用JSON.parse()
,将JSON
字符串转换成JS
对象,这样得到的就是一个全新JS
对象,与之前的内存地址不相连