function myStringfy(data) {
// 字符串 >>> 自己
// 数字 >>> 自己
// undefined >>> 自己 (外面不加引号)
// null >>> 自己
// function >>> undefined (外面不加引号)
// 数组 >>> 用逗号分隔 如果某项为undefined 该项处记录为null
// 对象 >>> key 用双引号包起来, 各属性逗号分隔 筛选掉undefined
const myStringfyFunc = data => {
if (
data === null ||
data === undefined ||
typeof data === 'string' ||
typeof data === 'number'
) {
return data
} else if (typeof data === 'function') {
return undefined
} else if (typeof data === 'object') {
if (Array.isArray(data)) {
// 数组
return `[${data
.map(item => {
if (myStringfyFunc(item) === undefined || item === null)
return 'null'
else return myStringfyFunc(item)
})
.join(',')}]`
} else {
// 对象
let arr = []
for (let key in data) {
if (myStringfyFunc(data[key]) !== undefined) {
arr.push(`"${key}":${myStringfyFunc(data[key])}`)
}
}
return `{${arr.join(',')}}`
}
} else {
return new Exception('UNKNOWN TYPE!')
}
}
if (data === undefined || typeof data === 'function') {
return myStringfyFunc(data)
} else if (typeof data === 'string') {
return `"${myStringfyFunc(data)}"`
} else {
return `${myStringfyFunc(data)}`
}
}