typescript或javascript深拷贝Object json
typescript或javascript深拷贝Object json
Object的json对象很多时候我们需要深拷贝,我写了两个工具函数,供大家参考。
deepCopyObject
深拷贝一个Object对象,返回深复制的对象。
/**
* @method 深复制一个json对象
* @param source 需要深复制的对象
* @return 返回一个新的json对象
* @author vincent 2018-11-29
* @version 0.0.0
* @example
* @log 1. vincent,2018-11-29, func、date、reg 和 err 类型不能正常拷贝
*/
export function deepCopyJson(source: Object): Object {const newObject = {};for (const key of Object.keys(source)) {newObject[key] = typeof source[key] === 'object' ? deepCopyJson(source[key]) : source[key];}return newObject;
}
mergeObject
合并两个对象,将dest合并到source中,修改source中的属性值,不会修改dest中的属性值。
/**
* @method 合并json对象,遇到相同元素级属性,以source为准
* @param source 被合并的json对象
* @param dest json对象,将此json的属性递归赋值给source
* @return void 不返还新的值而是直接改变source
* @author vincent 2018-12-01
* @version 0.0.0
* @example
* @log 1. vincent,2018-12-01,创建
*/
export function mergeJson(source: Object, dest: Object): void {for (const key of Object.keys(dest)) {if (source[key] === undefined) { // 不冲突的,直接赋值source[key] = dest[key];continue;}// 冲突了,如果是Object,看看有么有不冲突的属性// 不是Object 则以main为主,忽略即可。故不需要elseif (isJson(dest[key])) {// arguments.callee 递归调用,并且与函数名解耦mergeJson(source[key], dest[key]);}}
}/**
* @method 是否是json对象
* @param target 需要被判断的类型
* @return 如果是json对象返回 true,如果不是返回 false
* @author vincent 2018-12-01
* @version 0.0.0
* @example
* @log 1. vincent,2018-12-01,创建
*/
export function isJson(target): boolean {return typeof target === 'object' && target.constructor === Object;
}
typescript或javascript深拷贝Object json相关推荐
- js 对象深拷贝_这一次,彻底理解JavaScript深拷贝
导语 这一次,通过本文彻底理解JavaScript深拷贝! 阅读本文前可以先思考三个问题: JS世界里,数据是如何存储的? 深拷贝和浅拷贝的区别是什么? 如何写出一个真正合格的深拷贝? 本文会一步步解 ...
- typescript浅拷贝与深拷贝
浅拷贝与深拷贝的个人理解: 假设B去拷贝A的内容. 浅拷贝:B与A共用同一个内存地址,读取的值都指向同一块内存地址,所以无论A还是B对值进行修改,最终改的是内存地址里面的值,即改了A,B同时值也会改变 ...
- 4种JavaScript深拷贝的方法
浅拷贝与深拷贝 浅拷贝是创建一个新对象,这个对象有着原始对象属性值的拷贝.如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的是内存地址 . 如果不进行深拷贝,其中一个对象改变了对象 ...
- javascript eval和JSON之间的联系
eval函数的工作原理 eval函数会评估一个给定的含有JavaScript代码的字符串,并且试图去执行包含在字符串里的表达式或者一系列的合法的JavaScript语句.eval函数将把最后一个表达式 ...
- Python和JavaScript之间的JSON日期时间
本文翻译自:JSON datetime between Python and JavaScript I want to send a datetime.datetime object in seria ...
- 在JavaScript中解析JSON? [重复]
本文翻译自:Parse JSON in JavaScript? [duplicate] This question already has answers here : 这个问题已经在这里有了答案 : ...
- javascript对象和json字符串之间转换的问题
在开发中,当使用ajax向后端发送请求返回一个json时,有两个可能,一种是返回json字符串,一种是返回object. javascript中有两个方法可以用来处理两者之间的互相转换问题: JSON ...
- Json学习总结(1)——Java和JavaScript中使用Json方法大全
2019独角兽企业重金招聘Python工程师标准>>> 摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript ...
- JavaScript对象、JSON对象、JSON字符串的区别
一.首先看下什么是JSON JSON:JavaScript Object Natation,JavaScript对象的表现形式,已经发展成一种轻量级的数据交换格式. JavaScript对象的表现形式 ...
最新文章
- 犀利的 JavaScript
- 多个Activity与Fragment之间的数据传递
- C语言天才!想法奇异?还是逼格满满?一份国外C语言写的传奇简历
- 易语言操作php文本文件,易语言对文本操作的步骤教学
- 主机屋linux怎么连,全网最详细的samba文件共享服务!
- 删除visual studio最近打开的项目列表
- consul命令行查看服务_Go语言微服务架构实战:第十三节 微服务管理--Docker安装及运行consul节点...
- Spring 静态代理+JDK动态代理和CGLIB动态代理
- python输出重定向_使用Python子进程重定向标准输出到标准输入...
- asp.net生成店铺推广二维码,二维码中间加logo(源码)
- Matlab Gramm绘图工具箱
- 在Linux中打印常用书信与信封(转)
- rust哪家服务器便宜稳定,rust服务器选择
- 六 详细讲解主进程和渲染进程
- win10无法正常弹出移动硬盘/U盘
- 8_gin日拱一足---异步和同步
- android手机电池寿命,安卓手机如何查电池使用寿命
- RBP系统管理之系统用户管理
- 如何看懂k线图:K线详细分析图解
- Linux常用命令——pmap命令
热门文章
- Qt中绑定信号槽之后,信号槽无效
- Nmap渗透测试详解(一)
- html 响应式布局 九宫格,两种方法实现响应式九宫格布局
- php开发视频播放顺序,请问关于php代码运行顺序问题
- 换发型算法_GitHub - fredliu168/yry: yry(颜如玉)—— 一个实现人脸融合的算法,可以接近腾讯天天P图疯狂变脸功能的效果...
- dbnetlib sqlserver不存在或拒绝访问_404:对不起,您访问的网页不存在
- java setpaintmode 用法_详解Paint的各种set方法
- java super关键字简述
- java堆外内存溢出_JVM 案例 - 堆外内存导致的溢出错误
- 【JAVA基础篇】基本数据类型及自动类型转换