js数组,对象深拷贝

无事,封装了一个js深拷贝的方法
基本思路:
deepCopy(data)
data 可能是数组也可能是对象
1.判断data是数组 对象或者其他数据类型
2.声明空数组 或者 空对象 res
3.分别处理
如果数组元素或对象属性值不是数组或对象,空数组或对象之间接收元素
res.push(data[i])
res[x] = data[x]
如果数组元素或对象属性值是数组或对象,则可以再一次调用deepCopy
res.push(deepCopy(data[i]))
res[x] = deepCopy(data[x])
4.返回深拷贝数据 res

具体程序:

       var arr = [1,2,3,{name:'cat',age:21},undefined];
        // var arr = {name:'cat',age:21,boyfriend:[1,2,[1,2,3],{name:'sun'}],hobby:'games'}
               console.log(deepCopy(arr))
       function deepCopy(data){
           var res;
           if(data.constructor === Array){
                res = []
                for(var i = 0;i < data.length;i++){
                    if(data[i] instanceof Object){
                        res.push(deepCopy(data[i]))
                    }else{
                        res.push(data[i])
                    }
                }
           }else if(data.constructor === Object){
                   res = {}
                   for(x in data){
                    if(data[x] instanceof Object){
                        res[x] = deepCopy(data[x])
                    }else{
                        res[x] = data[x]
                    }
                   }
           }else{
               return -1;
           }
           return res;
       }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值