【JS 算法题: 将 json 转换为字符串】

题目简介

其实就是手撕 JSON.stringfy()。

算法实现

输入

原则上来说,输入的是一个 json 对象。但需要考虑到异常情况,即输入了其它类型的数据,比如:12, true, 'abc', 'red', 'green', null, undefined 等。

输出

输出一个字符串。

实现

javascript 复制代码
function jsonToString(obj) {
    if (typeof obj === 'undefined') return undefined;
    if (typeof obj === 'string') return `"${obj}"`;
    if (typeof obj === 'number' || typeof obj === 'boolean' || obj === null ) {
        return String(obj);
    }
    if (Array.isArray(obj)) {
        const arrJson = obj.map(item => jsonToString(item));
        return `[${arrJson.join(',')}]`;
    }
    if (typeof obj === 'object') {
        const res = []
        for (const key in obj) {
            if (obj.hasOwnProperty(key)) { // 对象实例上的属性
                const valueStr = jsonToString(obj[key]);
                res.push(`"${key}":${valueStr}`);
            }
        }
        return `{ ${res.join(',')} }`;
    }
}

测试case

javascript 复制代码
const jsonArr = [1, 2, [3, 4, 5, [3333, 'dd', {name: 'denny', age: {xx: '12'}}], true]];
const jsonObj = {
    name: 'denny',
    city: ['sh', 'bj', 'xa'],
    info: {
        age: 12,
        school: {}
    }
}

相关知识

数据类型转换

数据类型判断

判断一个值是否为对象

数组循环遍历

对象循环遍历

for...in...

遍历对象的可枚举属性(包含继承的可枚举属性)(symbol 除外)

javascript 复制代码
var triangle = { a: 1, b: 2, c: 3 };
function ColoredTriangle() {
  this.color = "red";
}
ColoredTriangle.prototype = triangle;

var obj = new ColoredTriangle();

for (var prop in obj) {
    // if (obj.hasOwnProperty(prop)) {
        console.log(prop);
    // }
}
javascript 复制代码
for (var prop in [1, 2, 3]) {
    console.log(prop);
}
// 0 1 2

判断对象的实例属性

相关推荐
山河木马3 小时前
矩阵专题3-怎么创建投影矩阵(uProjectionMatrix)
javascript·webgl·计算机图形学
泯泷4 小时前
第 2 篇:设计第一套字节码:Opcode、Instruction 与 Constant Pool
前端·javascript·安全
泯泷4 小时前
第 1 篇:从 1 + 2 开始:亲手写出第一台 JSVM
前端·javascript·安全
朦胧之5 小时前
页面白屏卡住排查方法
前端·javascript
犇驫聊AI6 小时前
Chrome DevTools MCP + Claude Code 自定义skills生成接口代码生成器
前端·javascript
kyriewen6 小时前
别再这样写 async/await 了:我在 Code Review 中见过最多的 8 个错误
前端·javascript·面试
BothSavage10 小时前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn10 小时前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法
用户2986985301411 小时前
在 React 中使用 JavaScript 将 Excel 转换为 SVG
前端·javascript·react.js