new WeakSet()
to store and check seen values, using WeakSet.prototype.add()
and WeakSet.prototype.has()
.JSON.stringify()
with a custom replacer function that omits values already in seen
, adding new values as necessary.const stringifyCircularJSON = obj => {
const seen = new WeakSet();
return JSON.stringify(obj, (k, v) => {
if (v !== null && typeof v === 'object') {
if (seen.has(v)) return;
seen.add(v);
}
return v;
});
};
const obj = { n: 42 };
obj.obj = obj;
stringifyCircularJSON(obj); // '{"n": 42}'
Subscribe to get resources directly to your inbox. You won't receive any spam! ✌️