面试一脸懵:判断对象内部存在循环引用

只要存在循环引用 JSON.stringify 一定会报错
在这里插入图片描述

function isLoop(obj){
    
    
	let flag = false
	function check(obj, pObj){
    
    
		pObj = pObj || [obj]
		for(let key in obj){
    
    
			if(typeof obj[key] === 'object'){
    
    
				pObj.forEach(item=>{
    
    
					if(item === obj[key]){
    
    
						obj[key] = 'circle'
						flag = true
					}
				})
				check(obj[key],[...pObj, obj[key]])
			}
		}
		return obj
	}
	check(obj)
	return flag
}
let a = {
    
    }
a.b = {
    
    }
a.b.c = a
console.log(isLoop(a))

猜你喜欢

转载自blog.csdn.net/m0_37285193/article/details/121744449