js 对象的深复制 解决不能复制undefined (递归)
- 用普通的拷贝 JSON.parse和 JSON.stringify 进行对象拷贝是不会拷贝undefined
- //普通的拷贝 
 const obj = {
 a: {
 b: {
 c: [1, 2, 3],
 h: { name: "233" },
 },
 },
 d: undefined,
 };
 const myObj = JSON.parse(JSON.stringify(obj))//myObj没有 d 属性
- 想要拷贝还没有赋值的对象属性或者赋值为undefined 的对象属性就得用到递归
- 1 function deepCopy(newObj, oldObj) {
 2 for (var k in oldObj) {
 3 if (Object.prototype.toString.call(oldObj[k]) === "[object Object]") {// 判断是否为对象
 4 newObj[k] = {};
 5 deepCopy(newObj[k], oldObj[k]);
 6 } else if (
 7 Object.prototype.toString.call(oldObj[k]) === "[object Array]"//判断是否为数组
 8 ) {
 9 newObj[k] = [];
 10 deepCopy(newObj[k], oldObj[k]);
 11 } else {
 12 newObj[k] = oldObj[k];
 13 }
 14 }
 15 }
- 传入两个对象一个空的对象 一个想要复制的对象
- 打印newObj 就是新的对象 还能复制undefined
js 对象的深复制 解决不能复制undefined (递归)的更多相关文章
- 超实用的JavaScript代码段 Item8 -- js对象的(深)拷贝
		js 对象 浅拷贝 和 深拷贝 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷贝: var Chinese = { nation:'中国' } var Doctor ... 
- js对象转换为json格式时,js对象属性中有值为null和undefined注意事项
		当属性值为null时: 当属性值为undefined时: 只有当属性值为未定义时, js对象转换成json格式时会忽略该属性. 
- js对象克隆, 深复制.
		亲测有效: //对象克隆 function clone(obj) { // Handle the 3 simple types, and null or undefined if (null == o ... 
- js对象简单、深度克隆(复制)
		javascript的一切实例都是对象,只是对象之间稍有不同,分为原始类型和合成类型.原始类型对象指的是字符串(String).数值(Number).布尔值(Boolean),合成类型对象指的是数组( ... 
- js对象常用属性和方法:复制一个对象,获取一个对象的所有key和所有value的方法
		记录对象的一些实用使用方法及属性 // Object.assign() 多个对象合并 key相同则后面的覆盖前面的 const target = { a: 1, b: 2 }; const sourc ... 
- js对象无法当成参数传递  解决方法
		思路:把对象转换为字符串进行传递 function test(){ var objParam = {"key":"value"}; var strObj = J ... 
- js 对象深复制,创建对象和继承
		js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 ... 
- js中的深复制与浅复制
		前言 所谓深复制与浅复制(深拷贝与浅拷贝),乍一听感觉听高大上,像是一个非常难理解的概念,其实我们平常项目开发都是在用的,只是你可能不知道该怎么叫它的名字而已,就像你听熟了一首歌,就是不知道这首歌叫什 ... 
- js对象进行浅复制,深拷贝的方法
		js对象浅拷贝和深拷贝详解 本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷 ... 
随机推荐
- NC14731 逆序对
			NC14731 逆序对 题目 题目描述 求所有长度为 \(n\) 的 \(01\) 串中满足如下条件的二元组个数: 设第 \(i\) 位和第 \(j\) 位分别位 \(a_i\) 和 \(a_j\) ... 
- Whats On Tap | Tapdata Cloud 如何助力大型家居连锁商城推进数字化经营?
			Tapdata Cloud 的操作有多便捷,上手试一下就能充分了解了.--Tapdata Cloud 用户 | 报表实施 @某大型家居服务平台 一边是监管政策趋严,推动房地产回归本源,存量竞争时代开启 ... 
- Unity3D学习笔记7——GPU实例化(2)
			目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 3. 参考 1. 概述 在上一篇文章<Unity3D学习笔记6--GPU实例化(1)>详细介绍了Unity3d中GPU实例化的 ... 
- Ros的通信第一课
			//////////////////////////Ros创建发布者talker//////////////////////////////////////////////////////////// ... 
- Golang仿云盘项目-2.2 保留文件元信息
			本文来自博客园,作者:Jayvee,转载请注明原文链接:https://www.cnblogs.com/cenjw/p/16459817.html 目录结构 E:\goproj\FileStorage ... 
- ooday01类_对象_访问成员
			笔记: 什么是类?什么是对象? 现实生活中是由很多很多对象组成的,基于对象抽出了类 对象:软件中真实存在的单个个体/东西 类:类别/类型,代表一类个体 类是对象的模子,对象是类的具体的实例 类中可以包 ... 
- 日志审计与分析实验三(rsyslog服务器端和客户端配置)(Linux日志收集)
			Linux日志收集 一.实验目的: 1.掌握rsyslog配置方法 2.配置rsyslog服务收集其他Linux服务器日志: C/S架构:客户端将其日志上传到服务器端,通过对服务器端日志的查询,来实现 ... 
- Schur不等式(舒尔不等式)
			舒尔( Schur \texttt{Schur} Schur)不等式1 具体内容 Schur \texttt{Schur} Schur 不等式: x , y , z x,y,z x,y,z 为非负实数 ... 
- 使用传统的方式遍历集合对集合中的数据进行过滤和使用Stream流的方式遍历集合对集合中的数据进行过滤
			使用传统的方式,遍历集合,对集合中的数据进行过滤 class Test{ public static void main(String[] args){ ArrayList<String> ... 
- 6.15 NOI 模拟
			\(T1\ ckr\)与平方数 不会吧,不会吧,真有人不会积分,好吧,我真的一点也不会... 基本公式\(:\) \(1.\)多项式定积分的计算方法 \[f(x)=\sum_{i=0}^nc_ix^i ... 
