JSON.stringify 循环对象 n^2

JSON.stringify cyclic object n^2

我需要JSON.stringify一个可能循环的对象,这意味着我必须预处理对象并删除循环。我已经知道 n^2 indexOf solution。由于 javascript 似乎没有公开对象 ID 或内存位置,也没有公开任何对象的通用哈希码,有没有办法使包含检查更快?

ES6 Set 对象可以跟踪直接访问的对象。当你遍历对象时,你将每个对象放入 Set 中,然后一个简单的 objSet.has(obj) 将告诉你是否已经遇到了这个对象。

当 ES6 Set 不可用时的解决方法通常涉及为每个对象添加一个不可枚举的唯一生成的字符串键,这样您就可以将其放入常规对象映射中,如 ES6 Set polyfill 所示.