1. 递归实现深浅拷贝
let objSq={
name:'大福',
age:{
name:'大福儿子',
age:15,
arrName:[20,10,15]
},
arrBox:[15,20,30]
}
let arrKb={}
const recursion=(v,arr)=>{
// 循环当前得对象
for (let key in v) {
// 判断是否是数组
// 是就先给新数组创建一个数组再把新数组传过去循环每一个数据
// 看是对象还是数组还是值,值就赋值
if(v[key] instanceof Array) {
arr[key]=[]
recursion(v[key],arr[key])
// 判断是否是对象
// 是就先给新对象创建一个对象再把新对象传过去循环每一个数据
// 看是对象还是对象还是值,值就赋值
}else if(v[key] instanceof Object) {
arr[key]={}
recursion(v[key],arr[key])
}else { // 不是直接赋值
arr[key] = v[key]
}
}
}
recursion(objSq,arrKb)
console.log('arrKb',arrKb);
2. 循环遍历dom树
// 循环遍历dom树
let arrDom=[]
const Domrecursion=(arr)=>{
// 每次进来循环所有的元素
arr.children.length!==0 && [...arr.children].map(element => {
arrDom.push(element)
// 把当前元素的子元素也找出来
Domrecursion(element)
})
}
Domrecursion(document)
console.log('document',arrDom);