无事,封装了一个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;
}