引用类型深浅拷贝
今天在做 LeetCode Path Sum II 的时候遇到一个数组浅复制的问题,一个数组保存节点的临时状态,在满足条件的情况下将其存放在结果数组中,有问题的代码如下:
1 | const result = [] |
考虑到 current
数组中都是基本数据类型,可以进行浅拷贝复制:(将 result.push(current)
用以下代码替换)
方式一:额外申请一个数组保存 current 的值
1 | let tmp = [] |
方式二:用 array.slice
进行浅拷贝
1 | result.push(current.slice(0)) |
另:如果 current
数组中有引用数据类型,引用数据类型中又有引用数据类型,深度拷贝则需要递归的对数组中每一项进行拷贝,直到数据类型是基本数据类型!