我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!
介绍
对象循环引用的判断在前端是十分常见的,我们在许多场景下都需要去进行对象的循环引用判断,接下来,我将设计一个函数用于判断对象的循环引用,如果大家有任何疑问和难题都可以评论区留言,我会第一时间解决和处理的。谢谢各位观众老爷的支持。
码上掘金地址
核心功能介绍
function judgeCircle (obj) {
let arr = []
let tmp = false
arr.push(obj)
const main = o => {
for(let key in o) {
let val = o[key]
if(typeof val==='object') {
if(arr.includes(val)) tmp = true
else {
arr.push(val)
main(val)
}
}
}
}
return tmp
}
- 首先设计一个函数,函数的第一个参数是对象
- 函数内部我们设计一个遍历表示判断是否存在循环引用,并且使用一个临时数组保存所有的对象
- 设计一个内部递归函数
- 遍历对象,判断如果对象的属性是一个对象,判断这个对象是否存在在数组,如果存在说明是循环引用
- 持续的递归,满足条件退出
- 返回最后的临时变量。
总结
通过对对象循环引用判断的分步讲解,大家肯定对对象循环引用判断有了很深的见解,后续大家可以亲自在码上掘金动手实践会更加明白其中的设计过程,谢谢各位的观看,有疑问评论区见。