一个高频面试题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| function deepClone(origin) { if(Array.isArray(origin)) { return origin.map(item => deepClone(item)) } if(Object.prototype.toString.call(origin) === '[object Object]') { let res = {} for(let key in origin) { res[key] = deepClone(origin[key]) } return res } return origin }
|
个人感觉考察点在于数据的类型判断,然手根据相应类型复制数据
在深入一下,深拷贝的问题:
需要存储已保存过的数据
改为while循环,貌似递归都可以进行如此改造
更完整的说明建议阅读:https://yanhaijing.com/javascript/2018/10/10/clone-deep/