JSON.stringify循环对象n ^ 2

时间:2015-09-06 22:27:01

标签: javascript json hashcode cyclic-reference

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

1 个答案:

答案 0 :(得分:1)

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

当ES6集不可用时的解决方法通常涉及向每个对象添加一个不可枚举的唯一生成的字符串键,以便您可以将其放在此ES6 Set polyfill中显示的常规对象映射中。 / p>