当前位置: 首页 > news >正文

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

题目简介

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

算法实现

输入

原则上来说,输入的是一个 json 对象。但需要考虑到异常情况,即输入了其它类型的数据,比如:12, true, ‘abc’, [‘red’, ‘green’], null, undefined 等。
在这里插入图片描述

输出

输出一个字符串。

实现

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

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 除外)

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);// }
}

在这里插入图片描述

for (var prop in [1, 2, 3]) {console.log(prop);
}
// 0 1 2

判断对象的实例属性

相关文章:

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

题目简介 其实就是手撕 JSON.stringfy()。 算法实现 输入 原则上来说,输入的是一个 json 对象。但需要考虑到异常情况,即输入了其它类型的数据,比如:12, true, ‘abc’, [‘red’, ‘green’], null, undefined 等。 输出 …...

数的范围 刷题笔记

思路 寻找第一个大于等于目标的 数 因为该数组是升序的 所以 我们可以采用二分的方式 逼近答案 定义一个左指针和一个右指针 当左右指针重合时 就是我们要找的答案 当我们寻找第一个大于等于x的数时 a[mid]>x,答案在mid处 或者在mid的左边 因此让rmid继续逼近 如果…...

XSS简介及xsslabs第一关

XSS被称为跨站脚本攻击(Cross-site scripting),由于和CSS(CascadingStyle Sheets)重名,所以改为XSS。 XSS主要速于javascript语言完成恶意的攻击行为,因为javascript可非常灵活的操作html、css和浏览器 XSS就是指通过利用网页开发时留下的漏…...

构建安全的REST API:OAuth2和JWT实践

引言 大家好,我是小黑,小黑在这里跟咱们聊聊,为什么REST API这么重要,同时,为何OAuth2和JWT在构建安全的REST API中扮演着不可或缺的角色。 想象一下,咱们每天都在使用的社交媒体、在线购物、银行服务等等…...

从0开始学习NEON(1)

1、前言 在上个博客中对NEON有了基础的了解,本文将针对一个图像下采样的例子对NEON进行学习。 学习链接:CPU优化技术 - NEON 开发进阶 上文链接:https://blog.csdn.net/weixin_42108183/article/details/136412104 2、第一个例子 现在有一张图片,需…...

(二十三)Flask之高频面试点

目录: 每篇前言:Q1:为什么把request和session放在一起?Q2:Local对象的作用?Q3::LocalStack对象的作用?Q4:一个运行中的Flask应用程序分别包括几个Local/LocalStack&#…...

设计模式(十三)抽象工厂模式

请直接看原文:设计模式(十三)抽象工厂模式_抽象工厂模式告诉我们,要针对接口而不是实现进行设计。( )-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- …...

HTTP Cookie 你了解多少?

Cookie是什么? 先给大家举个例子,F12 打开浏览器的页面之后,我们能在 Response Headers 的字段里面看到一个header 叫做 Set-Cookie,如下所示 图中包含的 Set-Cookie 为 Set-Cookie:uuid_tt_dd10_20293537580-1709432565344-232…...

【QT+QGIS跨平台编译】之五十六:【QGIS_CORE跨平台编译】—【qgsmeshcalclexer.cpp生成】

文章目录 一、Flex二、生成来源三、构建过程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一个替代品。它经常和自由软件 Bison 语法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 语言写成。 “flex 是一个生成扫描器的工具,能够识别文本中…...

ar时间序列

AR时间序列模型(AutoRegressive Time Series Model)是一种用于分析和预测时间序列数据的统计模型。该模型假设未来的观测值与过去的观测值相关,且该相关性可以通过线性回归来描述。 AR模型的基本思想是将当前时刻的观测值表示为过去几个时刻的…...

Android 14 AAOS audio

文章目录 乘客音频投放到主音频区动态路由配置controlhal实现的具体流程control hal AudioGain的callbackAudioModuleChange变化的通知 乘客音频投放到主音频区 场景: 是将乘客区的Media 属性的数据通过主屏区的设备进行播放。具体而言 在副屏user11播放的音乐是输出…...

文心一言 VS 讯飞星火 VS chatgpt (207)-- 算法导论15.4 4题

四、说明如何只使用表 c 中 2*min(m,n) 个表项及O(1)的额外空间来计算LCS的长度。然后说明如何只用 min(m,n) 个表项及O(1)的额外空间完成相同的工作。要写代码的时候,请用go语言。 文心一言: 在只使用 2 * min(m, n) 个表项和 …...

【论文笔记】Attention Is All You Need

【论文笔记】Attention Is All You Need 文章目录 【论文笔记】Attention Is All You NeedAbstract1 Introduction2 Background补充知识:软注意力 soft attention 和硬注意力 hard attention?补充知识:加法注意力机制和点乘注意力机制Extende…...

(亲测可用)Adobe Photoshop 2024下载与安装

背景介绍:Adobe Photoshop 2024 是全球最受欢迎的图像编辑软件之一,2024年的版本带来了一系列令人印象深刻的功能: AI增强的自动选择和蒙版工具:现在,用户可以更轻松地选择和处理复杂的图像元素。更多的3D渲染功能&…...

uniapp聊天记录本地存储(详细易懂)

目录 目录 1、通过websocket拿取数据 2、获取聊天数据 3、聊天信息存储 、更新 4、读取聊天记录 5、发送信息,信息获取 6、最终效果 1.聊天信息的存储格式 2、样式效果 写聊天项目,使用到了本地存储。需要把聊天信息保存在本地,实时获…...

Vue.js中的$nextTick

其实目前在我现有的开发经历中,我还没有实际运用过$nextTick,今天在看书时,学习到了这个东西,所以做个笔记记录一下。 一、$nextTick是什么? $nextTick 是 Vue提供的一个方法,用于在 DOM 更新之后执行回调…...

python+mysql咖啡店推荐系统django+vue

(1).研究的基本内容 系统的角色分为: 1.管理员 2.会员 3.非会员 角色不同,权限也不相同 技术栈 后端:python 前端:vue.jselementui 框架:django/flask Python版本:python3.7 数据库:mysql5.7…...

综合实验nginx+nfs+kpa

综合实验 实验目的: 静态资源和动态资源分别存放在远端存储NFS上,NFS上数据实现实时备份,用户通过负载访问后端的web服务。实现ngixn负载高可用,当keepalived master宕机,vip能自动跳转到备用节点 实验环境&#xff…...

springboot197基于springboot的毕业设计系统的开发

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的毕业设计系统的开发 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 …...

group by报错

# 报错:[42000][1055] Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column base.biz_org_rep.ID which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_grou…...

Redis:延迟双删的适用边界与落地细节诒

pagehelper整合 引入依赖com.github.pagehelperpagehelper-spring-boot-starter2.1.0compile编写代码 GetMapping("/list/{pageNo}") public PageInfo findAll(PathVariable int pageNo) {// 设置当前页码和每页显示的条数PageHelper.startPage(pageNo, 10);// 查询数…...

别再手动画甘特图了!3分钟学会用Excel条件格式自动生成(含节假日设置技巧)

别再手动画甘特图了!3分钟学会用Excel条件格式自动生成(含节假日设置技巧) 项目管理中,甘特图是展示任务进度和时间安排的重要工具。传统手动绘制甘特图不仅耗时耗力,而且难以应对频繁的日期调整。今天,我将…...

别再数据线了!用FastAPI 分钟搭个局域网文件+剪贴板神器颂

为 HagiCode 添加 GitHub Pages 自动部署支持 本项目早期代号为 PCode,现已正式更名为 HagiCode。本文记录了如何为项目引入自动化静态站点部署能力,让内容发布像喝水一样简单。 背景/引言 在 HagiCode 的开发过程中,我们遇到了一个很现实的问…...

汽车变速箱企业Kisssoft许可证成本控制成功案例

汽车变速箱企业Kisssoft许可证成本控制成功案例讲真,用Kisssoft做仿真设计,许可证成本真是吃掉不少预算,是一大推企业并尚未真正掌握咋用好这伙许可证一出来,弄得浪费严重,合规风险也高。咱就在2026年帮助一家汽车变速…...

Bootstrap Switch终极指南:如何在10分钟内创建精美切换开关

Bootstrap Switch终极指南:如何在10分钟内创建精美切换开关 【免费下载链接】bootstrap-switch Turn checkboxes and radio buttons in toggle switches. 项目地址: https://gitcode.com/gh_mirrors/bo/bootstrap-switch Bootstrap Switch是一款强大的JavaSc…...

黑马点评实战篇知识点整理-秒杀进阶

异步秒杀思路问题:串行执行,性能不行(查询库存,查询订单,扣减库存,写入订单,全是数据库,还加了锁,性能不行)把判断秒杀资格和一人一单放到redis里保存用户id&…...

Python新手必看:彻底搞懂 | ^的二进制运算原理(图解版)

Python新手必看:彻底搞懂& | ^的二进制运算原理(图解版) 在编程的世界里,二进制运算就像是一把打开计算机底层逻辑的钥匙。对于Python初学者来说,理解&、|、^这些位运算符的工作原理,不仅能帮助你写…...

PHP表单开发效率提升370%的秘密:基于Swoole+Vue3的低代码引擎架构拆解(含性能压测对比数据)

第一章:PHP低代码表单引擎开发概述 PHP低代码表单引擎是一种面向业务人员与开发者协同的轻量级开发范式,它将表单结构定义、校验逻辑、数据绑定与渲染流程抽象为可配置、可复用的组件体系,显著降低CRUD类表单应用的构建门槛。该引擎不依赖重型…...

【PHP 8.9类型革命】:从nullable到intersection,从static返回到inferable closures——12个必须掌握的类型语法变更清单

第一章:PHP 8.9类型系统演进全景图PHP 8.9尚未正式发布,但根据PHP开发团队在RFC草案与内部路线图中的持续披露,其类型系统将围绕“静态可推导性”与“运行时契约强化”双主线进行深度重构。该版本并非简单叠加新语法,而是对类型声…...

Qwen3-Reranker-0.6B性能调优:降低显存占用的3种方法

Qwen3-Reranker-0.6B性能调优:降低显存占用的3种方法 1. 引言 如果你正在使用Qwen3-Reranker-0.6B这个重排序模型,可能会遇到显存占用过高的问题。特别是在处理大批量文本对时,显存不足往往成为性能瓶颈。经过实际测试,我发现通…...