day116-手写JSON.stringify

前言

没啥可说的,这篇比较水。
JSON.stringify(value[, replacer [, space]])

代码

function jsonStringify(obj) {
let type = typeof obj
if (type !== "object") {
// undefined 什么的会被忽略,循环引用也会被忽略
if (/string|undefined|function/.test(type)) {
obj = '"' + obj + '"'
}
return String(obj)
} else {
let json = []
let arr = Array.isArray(obj)
for (let k in obj) {
let v = obj[k]
let type = typeof v
if (/string|undefined|function/.test(type)) {
v = '"' + v + '"'
} else if (type === "object") {
v = jsonStringify(v)
}
json.push((arr ? "" : '"' + k + '":') + String(v))
}
return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}")
}
}

参考

JavaScript手写代码无敌秘籍

文章作者: lmislm
文章链接: http://lmislm.com/2019/05/08/2019-05-08/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog