2015-09-06 41 views
-1

我需要JSON.stringify一個可能的循環對象,這意味着我必須預處理對象並刪除循環。我已經知道n^2 indexOf solution。鑑於JavaScript似乎沒有提供對象ID或內存位置,也沒有通用的哈希碼,有沒有辦法讓遏制檢查更快?JSON.stringify循環對象n^2

+4

的可能重複的[序列化對象,它包含環狀對象值](http://stackoverflow.com/questions/9382167/serializing-object-that-c​​ontains-cyclic-object-value) – fixmycode

+0

的ES6'Set'對象可以跟蹤直接訪問的對象。無法使用的解決方法通常包括向每個對象添加一個不可枚舉的唯一生成的字符串鍵,以便將其放入此填充中顯示的常規對象映射中:https://github.com/jfriend00/ ES6-Set/blob/master/set.js – jfriend00

+0

@ jfriend00謝謝,這可能是我在找的東西。你介意給出這個答案嗎? – erjoalgo

回答

1

ES6 Set對象可以跟蹤直接訪問的對象。當你遍歷對象時,你將每個對象放入Set中,然後一個簡單的objSet.has(obj)會告訴你是否已經遇到過這個對象。

當ES6 Set不可用時的解決方法通常需要爲每個對象添加一個不可枚舉的唯一生成的字符串鍵,以便您可以將其放置在此處顯示的常規對象圖中ES6 Set polyfill