Skip to content

Instantly share code, notes, and snippets.

@sahilmore-git
Last active August 7, 2022 17:46
Show Gist options
  • Save sahilmore-git/c261cde7909fc2fe102170fafbfe5631 to your computer and use it in GitHub Desktop.
Save sahilmore-git/c261cde7909fc2fe102170fafbfe5631 to your computer and use it in GitHub Desktop.
Polyfill for JSON.stringify
function stringify(data) {
if (data === undefined)
return undefined
if (data === null)
return 'null'
if (data.toString() === "NaN")
return 'null'
if (data === Infinity)
return 'null'
if (data.constructor === String)
return '"' + data.replace(/"/g, '\\"') + '"'
if (data.constructor === Number)
return String(data)
if (data.constructor === Boolean)
return data ? 'true' : 'false'
if (data.constructor === Array)
return '[' + data.reduce((acc, v) => {
if (v === undefined || v === NaN || v === Infinity)
return [...acc, 'null']
else
return [...acc, stringify(v)]
}, []).join(',') + ']'
if (data.constructor === Object)
return '{' + Object.keys(data).reduce((acc, k) => {
if (data[k] === undefined)
return acc
else
return [...acc, stringify(k) + ':' + stringify(data[k])]
}, []).join(',') + '}'
return '{}'
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment