JS怎样判断一个对象是否存在"环"?

如下题:

JSON.stringify 的功能是,将一个 JavaScript 字面量对象转化为一个 JSON 格式的字符串。例如


const obj = {a:1, b:2}

JSON.stringify(obj) // => '{"a":1,"b":2}'

当要转化的对象有“环”存在时(子节点属性赋值了父节点的引用),为了避免死循环,JSON.stringify 会抛出异常,例如:


const obj = {

  foo: {

    name: 'foo',

    bar: {

      name: 'bar'

      baz: {

        name: 'baz',

        aChild: null  //待会让它指向obj.foo

      }

    }

  }

}

obj.foo.bar.baz.aChild = obj.foo // foo->bar->baz->aChild->foo 形成环

JSON.stringify(obj) // => TypeError: Converting circular structure to JSON

请完善以下“环”检查器函数 cycleDetector,当入参对象中有环时返回 true,否则返回 false。


function cycleDetector(obj) {   

  // 请添加代码

}


qq_笑_17
浏览 734回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript