没有js金刚钻 怎么,一步一步,一步斩获大厂offer

手写递归深拷贝,必会的

<script>
    // 定义一个嵌套深的对象,深拷贝
    let obj = {
            name: '张三',
            list: [1, 2, 3]
        }
        //判断是否是基本数据类型,如果是直接return,因为复杂数据类型才会深拷贝
    function deepClone(obj) {
        //判断是否是基本数据类型,nul也是基本数据类型
        if (typeof obj !== 'object' || obj == null) {
            return obj
        }
        //初始化判断是数组还是对象 初始化返回结果
        let result
        if (obj instanceof Array) {
            result = []
        } else {
            result = {}
        }
        //for in 循环,数组和对象有原型,空的也有,没必要去拿obj原型上的方法或属性
        for (let key in obj) {
            //排除原型上的方法或属性 hasOwnProperty判断是否是自己私有属性
            if (obj.hasOwnProperty(key)) {
                result[key] = deepClone(obj[key]) //递归调用
            }
        }
        return result
    }
    console.log(obj); //{name: '张三', list: Array(3)}
    let newObj = deepClone(obj)
    console.log(newObj); //{name: '张三', list: Array(3)}
    // 检测一下深拷贝是否成
    newObj.name = '李四'
    console.log(newObj); //{name: '李四', list: Array(3)}  ok 关机下班
</script>

没有js金刚钻 怎么,一步一步,一步斩获大厂offer 

 

上一篇:剑指 Offer 03. 数组中重复的数字(python3编写)


下一篇:二叉树镜像问题——Offer. 27&28