判断对象是否存在循环引用

# 判断对象是否存在循环引用

const isCycleObject = (obj, parent) => {
}

const a = 1;
const b = {a};
const c = {b};
const o = {d:{a:3},c}
o.c.b.aa = a;

console.log(isCycleObject(o))

1
2
3
4
5
6
7
8
9
10
11
const isCycleObject = (obj, parent = new Set()) => {
  let isLoop = false

  for (let key in obj) {
    const value = obj[key]
    if (value && typeof value === 'object') {
      if (parent.has(value)) return (isLoop = true)

      parent.add(value)
      isLoop = isCycleObject(value, parent)
    }
  }

  return isLoop
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
上次更新: 2022/7/29 上午11:39:16