判断对象是否存在循环引用
# 判断对象是否存在循环引用
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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15