1.
var data=[ { name:'aa',list:[ {name:'bb'} ]}
]
function deepCopy(data){
if(Array.isArray(data)){
var res =[];
for(var i=0;i<data.length;i++){
if(data[i] instanceof Object){
var copy =deepCopy(data[i])
res.push(copy)
}else{
res.push(data[i])
}
}
return res;
}else if(data.constructor === Object){
var res=[];
for(var x in data){
//如果data【x】可能是数组或者对象时候
if(data[x] instanceof Object){
var copy = deepCopy(data[x])//执行拷贝
res[x]=copy;//
}else{
res[x]=data[x]
}
}
return res;
}
}
2.
var data = [
1,
{name:'aa',list:[]},
[1,2,3,4,[1]],
{name:'11'}
]
function deepCopy(data){
// 如果不是数组后者对象 直接返回
if(!(data instanceof Object)){
return data
}
//如果是数组进行数组的深拷贝
if(Array.isArray(data)){
//新建数组
var res = []
//2.将data 中数拷贝到res中
for(var i = 0 ;i<data.length;i++){
// data[i] 数组 对象 其他类型
res.push(deepCopy(data[i]))
}
//返回数组拷贝结果
return res
}
var obj = {}
for(var x in data){
console.log(data[x]);
obj[x] = deepCopy(data[x])
}
return obj
}
//1.首先排除特殊条件 js 基本数据类型
//2.分别对数组和对象分别进行深拷贝
//2.1首先要创建{}[]
//2.2将拷贝内容添加到 [] {} 中