循环递归实现深拷贝

发布于:2022-12-23 ⋅ 阅读:(516) ⋅ 点赞:(0)

利用递归实现深拷贝
浅拷贝和深拷贝的区别:
     浅拷贝 : 只是将数据中所有的数据引用下来,依旧指向同一个存放地址,拷贝之后的数据修改之后,也会影响到原数据的中的对象数据
    深拷贝: 将数据中所有的数据拷贝下来,对拷贝之后的数据进行修改不会影响到原数据

代码如下所示:

         <script>

                    const obj1 = {

                              uname: 'zs',

                              age: 18,

                              gender: '男',

                              gfs: ['豆得儿'],

                              cars: {

                                        brand: '宝马X5'

                              }

                    }

             function deepCopy(oldObj) {

             // 1. 判断一下 传递进来的 形参是不是 数组 如果是数组 给一个 空数组 如果不是 给 空对象

              const newObj = Array.isArray(oldObj) ? [] : {}

              // 2. 遍历 oldObj 使用 for in 遍历

              for (let k in oldObj) {

                // console.log(k, oldObj[k])

                // 判断 对象的属性值 是 简单类型还是引用类型 (对象|数组)

                if (typeof oldObj[k] === 'object') {

                  // console.log('引用类型', oldObj[k])

                  newObj[k] = deepCopy(oldObj[k])

                } else {

                  // 简单类型 将值赋值给 newObj

                  newObj[k] = oldObj[k]

                }

         }

              return newObj

    }

                const obj2 = deepCopy(obj1)

                console.log(obj2)

          </script>

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到