实现 JSON.stringify
功能:将 JavaScript 值转换为 JSON 字符串。
思路
- 根据值的类型进行不同的处理:
- 基本类型(
number、boolean、null):直接转换为字符串 - 字符串:添加双引号包裹
- 数组:递归处理每个元素,用方括号和逗号拼接
- 对象:遍历所有可枚举属性,递归处理值,用花括号和逗号拼接
- 基本类型(
- 特殊处理:
- 使用
hasOwnProperty检查属性是否为对象自身属性 - 跳过值为
undefined的属性(符合 JSON 规范)
- 使用
- 递归调用
jsonStringify处理嵌套结构
代码
js
function jsonStringify(val) {
const type = typeof val;
if(type === "number" || type === "boolean" || val === null) {
return String(val);
}
if(type === "string"){
return `"${val}"`;
}
if(Array.isArray(val)) {
return "[" + val.map((item) => jsonStringify(item)).join(',') + "]";
}
if(type === "object") {
const result = [];
for(let key in val) {
if(Object.prototype.hasOwnProperty.call(val, key)) {
if(val[key] !== undefined) {
result.push('"' + key + '":'+ jsonStringify(val[key]));
}
}
}
return "{" + result.join(',') + "}";
}
}