码上掘金实现对象循环引用判断

93 阅读1分钟

我正在参加「码上掘金挑战赛」详情请看:码上掘金挑战赛来了!

介绍

对象循环引用的判断在前端是十分常见的,我们在许多场景下都需要去进行对象的循环引用判断,接下来,我将设计一个函数用于判断对象的循环引用,如果大家有任何疑问和难题都可以评论区留言,我会第一时间解决和处理的。谢谢各位观众老爷的支持。

码上掘金地址

核心功能介绍

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
}
  1. 首先设计一个函数,函数的第一个参数是对象
  2. 函数内部我们设计一个遍历表示判断是否存在循环引用,并且使用一个临时数组保存所有的对象
  3. 设计一个内部递归函数
  4. 遍历对象,判断如果对象的属性是一个对象,判断这个对象是否存在在数组,如果存在说明是循环引用
  5. 持续的递归,满足条件退出
  6. 返回最后的临时变量。

总结

通过对对象循环引用判断的分步讲解,大家肯定对对象循环引用判断有了很深的见解,后续大家可以亲自在码上掘金动手实践会更加明白其中的设计过程,谢谢各位的观看,有疑问评论区见。