javascript中json或数组深拷贝解决方法及实例

栏目: JavaScript · 发布时间: 6年前

let arr = { a:1, b:2 }
 let arr2 = { ...arr }
 arr.a = 1111
 console.log(arr,arr2)
复制代码

2. Ojbect.assign(目标对象,源对象)--ES6

let arr = { a:1, b:2 }
let arr2 = Object.assign({},arr)
arr.a = 1111
console.log(arr,arr2)
复制代码

深拷贝多级(json,数组)包含只有一级

1.简单直接点的 JSON.parse(JSON.stringify(对象))

let arr = { a: { age: 12 }, b:2 }
let arr2 = JSON.parse(JSON.stringify(arr))
arr.a.age = 18
console.log(arr,arr2)
复制代码

2.自定义一个函数实现深度拷贝

function copy(obj){
	/**
		只需要三步就ok
		第一步: 使用typeof判断obj是否是一个对象
		第二步: 初始化一个新的对象(使用obj.constructor判断是数组还是json)
		第三步: 遍历对象 将每一个元素是基本数据类型的赋值给新的对象,否则递归此方法
	*/

	if(typeof obj !== 'object'){
		return
	}
	let newobj = obj.constructor === Array ? [] : {}
	for(let i in obj){
		newobj[i] = typeof obj[i] === 'object' ? copy(obj[i]) : obj[i]
	}
	return newobj
}
let arr = { a: { age: 12 }, b:2 }
let arr2 = copy(arr)
arr.a.age = 18
console.log(arr,arr2)
复制代码

3. 使用eval()函数

let arr = { a: { age: 12 }, b:2 }
let arr2 = eval("("+JSON.stringify(arr)+")")
arr.a.age = 18
console.log(arr,arr2)
复制代码

以上所述就是小编给大家介绍的《javascript中json或数组深拷贝解决方法及实例》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

设计原本

设计原本

Frederick P. Brooks, Jr. / InfoQ中文站、王海鹏、高博 / 机械工业出版社 / 2011-1-1 / 55.00元

无论是软件开发、工程还是建筑,有效的设计都是工作的核心。《设计原本:计算机科学巨匠Frederick P. Brooks的思考》将对设计过程进行深入分析,揭示进行有效和优雅设计的方法。 本书包含了多个行业设计者的特别领悟。Frederick P. Brooks, Jr.精确发现了所有设计项目中内在的不变因素,揭示 了进行优秀设计的过程和模式。通过与几十位优秀设计者的对话,以及他自己在几个设计......一起来看看 《设计原本》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

SHA 加密
SHA 加密

SHA 加密工具